{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font color=gray size=4> 2022春 《交互式数据可视化》 week01 </font> \n",
    "\n",
    "<font color=gray size=4> 张瑜婷</font>\n",
    "\n",
    "<font color=gray size=4> 时间：2022.03.02 </font>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 快捷键学习"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1.所在单元未进入编辑模式"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* A 会在活跃单元上方插入新的单元，B 会在活跃单元下方插入新单元。\n",
    "\n",
    "* 连续按两次 D，可删除所在单元。\n",
    "\n",
    "* 撤销被删除的单元，按 Z。\n",
    "\n",
    "* 在未编辑状态下， Y 会使当前活跃的单元变成代码单元，M 则变成markdown代码单元。\n",
    "\n",
    "* 按住 Shift + 上或下箭头可选择多个单元。在多选模式时，按住 Shift + M 可合并你的选择。\n",
    "\n",
    "* 按 F 会弹出「查找和替换」菜单。\n",
    "\n",
    "* Ctrl + Shift + F 打开命令面板。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2.所在单元进入编辑模式"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* Ctrl + Home 到达单元起始位置。\n",
    "* Ctrl + S 保存进度。\n",
    "* 如之前提到的，Ctrl + Enter 会运行你的整个单元块。\n",
    "* Alt + Enter 不止会运行你的单元块，还会在下面添加一个新单元。\n",
    "\n",
    "________"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 了解常用的交互式可视化的工具\n",
    "\n",
    "* 1. [Apache ECharts](https://echarts.apache.org/zh/index.html)\n",
    "> 一个基于 JavaScript 的开源可视化图表库\n",
    "\n",
    "* 2. [pyecharts](https://pyecharts.org/#/)\n",
    "> A Python Echarts Plotting Library(Python Echarts绘图库)\n",
    "\n",
    "* 3. [Bokeh](https://docs.bokeh.org/en/latest/)\n",
    "> Bokeh is a Python library for creating interactive visualizations for modern web browsers\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 初步学习Bokeh"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 导入相关库"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "    <div class=\"bk-root\">\n",
       "        <a href=\"https://bokeh.org\" target=\"_blank\" class=\"bk-logo bk-logo-small bk-logo-notebook\"></a>\n",
       "        <span id=\"4180\">Loading BokehJS ...</span>\n",
       "    </div>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/javascript": [
       "\n",
       "(function(root) {\n",
       "  function now() {\n",
       "    return new Date();\n",
       "  }\n",
       "\n",
       "  var force = true;\n",
       "\n",
       "  if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n",
       "    root._bokeh_onload_callbacks = [];\n",
       "    root._bokeh_is_loading = undefined;\n",
       "  }\n",
       "\n",
       "  var JS_MIME_TYPE = 'application/javascript';\n",
       "  var HTML_MIME_TYPE = 'text/html';\n",
       "  var EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n",
       "  var CLASS_NAME = 'output_bokeh rendered_html';\n",
       "\n",
       "  /**\n",
       "   * Render data to the DOM node\n",
       "   */\n",
       "  function render(props, node) {\n",
       "    var script = document.createElement(\"script\");\n",
       "    node.appendChild(script);\n",
       "  }\n",
       "\n",
       "  /**\n",
       "   * Handle when an output is cleared or removed\n",
       "   */\n",
       "  function handleClearOutput(event, handle) {\n",
       "    var cell = handle.cell;\n",
       "\n",
       "    var id = cell.output_area._bokeh_element_id;\n",
       "    var server_id = cell.output_area._bokeh_server_id;\n",
       "    // Clean up Bokeh references\n",
       "    if (id != null && id in Bokeh.index) {\n",
       "      Bokeh.index[id].model.document.clear();\n",
       "      delete Bokeh.index[id];\n",
       "    }\n",
       "\n",
       "    if (server_id !== undefined) {\n",
       "      // Clean up Bokeh references\n",
       "      var cmd = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n",
       "      cell.notebook.kernel.execute(cmd, {\n",
       "        iopub: {\n",
       "          output: function(msg) {\n",
       "            var id = msg.content.text.trim();\n",
       "            if (id in Bokeh.index) {\n",
       "              Bokeh.index[id].model.document.clear();\n",
       "              delete Bokeh.index[id];\n",
       "            }\n",
       "          }\n",
       "        }\n",
       "      });\n",
       "      // Destroy server and session\n",
       "      var cmd = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n",
       "      cell.notebook.kernel.execute(cmd);\n",
       "    }\n",
       "  }\n",
       "\n",
       "  /**\n",
       "   * Handle when a new output is added\n",
       "   */\n",
       "  function handleAddOutput(event, handle) {\n",
       "    var output_area = handle.output_area;\n",
       "    var output = handle.output;\n",
       "\n",
       "    // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n",
       "    if ((output.output_type != \"display_data\") || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n",
       "      return\n",
       "    }\n",
       "\n",
       "    var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n",
       "\n",
       "    if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n",
       "      toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n",
       "      // store reference to embed id on output_area\n",
       "      output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n",
       "    }\n",
       "    if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n",
       "      var bk_div = document.createElement(\"div\");\n",
       "      bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n",
       "      var script_attrs = bk_div.children[0].attributes;\n",
       "      for (var i = 0; i < script_attrs.length; i++) {\n",
       "        toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n",
       "        toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n",
       "      }\n",
       "      // store reference to server id on output_area\n",
       "      output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n",
       "    }\n",
       "  }\n",
       "\n",
       "  function register_renderer(events, OutputArea) {\n",
       "\n",
       "    function append_mime(data, metadata, element) {\n",
       "      // create a DOM node to render to\n",
       "      var toinsert = this.create_output_subarea(\n",
       "        metadata,\n",
       "        CLASS_NAME,\n",
       "        EXEC_MIME_TYPE\n",
       "      );\n",
       "      this.keyboard_manager.register_events(toinsert);\n",
       "      // Render to node\n",
       "      var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n",
       "      render(props, toinsert[toinsert.length - 1]);\n",
       "      element.append(toinsert);\n",
       "      return toinsert\n",
       "    }\n",
       "\n",
       "    /* Handle when an output is cleared or removed */\n",
       "    events.on('clear_output.CodeCell', handleClearOutput);\n",
       "    events.on('delete.Cell', handleClearOutput);\n",
       "\n",
       "    /* Handle when a new output is added */\n",
       "    events.on('output_added.OutputArea', handleAddOutput);\n",
       "\n",
       "    /**\n",
       "     * Register the mime type and append_mime function with output_area\n",
       "     */\n",
       "    OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n",
       "      /* Is output safe? */\n",
       "      safe: true,\n",
       "      /* Index of renderer in `output_area.display_order` */\n",
       "      index: 0\n",
       "    });\n",
       "  }\n",
       "\n",
       "  // register the mime type if in Jupyter Notebook environment and previously unregistered\n",
       "  if (root.Jupyter !== undefined) {\n",
       "    var events = require('base/js/events');\n",
       "    var OutputArea = require('notebook/js/outputarea').OutputArea;\n",
       "\n",
       "    if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n",
       "      register_renderer(events, OutputArea);\n",
       "    }\n",
       "  }\n",
       "\n",
       "  \n",
       "  if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n",
       "    root._bokeh_timeout = Date.now() + 5000;\n",
       "    root._bokeh_failed_load = false;\n",
       "  }\n",
       "\n",
       "  var NB_LOAD_WARNING = {'data': {'text/html':\n",
       "     \"<div style='background-color: #fdd'>\\n\"+\n",
       "     \"<p>\\n\"+\n",
       "     \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n",
       "     \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n",
       "     \"</p>\\n\"+\n",
       "     \"<ul>\\n\"+\n",
       "     \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n",
       "     \"<li>use INLINE resources instead, as so:</li>\\n\"+\n",
       "     \"</ul>\\n\"+\n",
       "     \"<code>\\n\"+\n",
       "     \"from bokeh.resources import INLINE\\n\"+\n",
       "     \"output_notebook(resources=INLINE)\\n\"+\n",
       "     \"</code>\\n\"+\n",
       "     \"</div>\"}};\n",
       "\n",
       "  function display_loaded() {\n",
       "    var el = document.getElementById(\"4180\");\n",
       "    if (el != null) {\n",
       "      el.textContent = \"BokehJS is loading...\";\n",
       "    }\n",
       "    if (root.Bokeh !== undefined) {\n",
       "      if (el != null) {\n",
       "        el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n",
       "      }\n",
       "    } else if (Date.now() < root._bokeh_timeout) {\n",
       "      setTimeout(display_loaded, 100)\n",
       "    }\n",
       "  }\n",
       "\n",
       "\n",
       "  function run_callbacks() {\n",
       "    try {\n",
       "      root._bokeh_onload_callbacks.forEach(function(callback) {\n",
       "        if (callback != null)\n",
       "          callback();\n",
       "      });\n",
       "    } finally {\n",
       "      delete root._bokeh_onload_callbacks\n",
       "    }\n",
       "    console.debug(\"Bokeh: all callbacks have finished\");\n",
       "  }\n",
       "\n",
       "  function load_libs(css_urls, js_urls, callback) {\n",
       "    if (css_urls == null) css_urls = [];\n",
       "    if (js_urls == null) js_urls = [];\n",
       "\n",
       "    root._bokeh_onload_callbacks.push(callback);\n",
       "    if (root._bokeh_is_loading > 0) {\n",
       "      console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",
       "      return null;\n",
       "    }\n",
       "    if (js_urls == null || js_urls.length === 0) {\n",
       "      run_callbacks();\n",
       "      return null;\n",
       "    }\n",
       "    console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
       "    root._bokeh_is_loading = css_urls.length + js_urls.length;\n",
       "\n",
       "    function on_load() {\n",
       "      root._bokeh_is_loading--;\n",
       "      if (root._bokeh_is_loading === 0) {\n",
       "        console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n",
       "        run_callbacks()\n",
       "      }\n",
       "    }\n",
       "\n",
       "    function on_error() {\n",
       "      console.error(\"failed to load \" + url);\n",
       "    }\n",
       "\n",
       "    for (var i = 0; i < css_urls.length; i++) {\n",
       "      var url = css_urls[i];\n",
       "      const element = document.createElement(\"link\");\n",
       "      element.onload = on_load;\n",
       "      element.onerror = on_error;\n",
       "      element.rel = \"stylesheet\";\n",
       "      element.type = \"text/css\";\n",
       "      element.href = url;\n",
       "      console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n",
       "      document.body.appendChild(element);\n",
       "    }\n",
       "\n",
       "    const hashes = {\"https://cdn.bokeh.org/bokeh/release/bokeh-2.2.3.min.js\": \"T2yuo9Oe71Cz/I4X9Ac5+gpEa5a8PpJCDlqKYO0CfAuEszu1JrXLl8YugMqYe3sM\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.2.3.min.js\": \"98GDGJ0kOMCUMUePhksaQ/GYgB3+NH9h996V88sh3aOiUNX3N+fLXAtry6xctSZ6\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.2.3.min.js\": \"89bArO+nlbP3sgakeHjCo1JYxYR5wufVgA3IbUvDY+K7w4zyxJqssu7wVnfeKCq8\"};\n",
       "\n",
       "    for (var i = 0; i < js_urls.length; i++) {\n",
       "      var url = js_urls[i];\n",
       "      var element = document.createElement('script');\n",
       "      element.onload = on_load;\n",
       "      element.onerror = on_error;\n",
       "      element.async = false;\n",
       "      element.src = url;\n",
       "      if (url in hashes) {\n",
       "        element.crossOrigin = \"anonymous\";\n",
       "        element.integrity = \"sha384-\" + hashes[url];\n",
       "      }\n",
       "      console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
       "      document.head.appendChild(element);\n",
       "    }\n",
       "  };\n",
       "\n",
       "  function inject_raw_css(css) {\n",
       "    const element = document.createElement(\"style\");\n",
       "    element.appendChild(document.createTextNode(css));\n",
       "    document.body.appendChild(element);\n",
       "  }\n",
       "\n",
       "  \n",
       "  var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.2.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.2.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.2.3.min.js\"];\n",
       "  var css_urls = [];\n",
       "  \n",
       "\n",
       "  var inline_js = [\n",
       "    function(Bokeh) {\n",
       "      Bokeh.set_log_level(\"info\");\n",
       "    },\n",
       "    function(Bokeh) {\n",
       "    \n",
       "    \n",
       "    }\n",
       "  ];\n",
       "\n",
       "  function run_inline_js() {\n",
       "    \n",
       "    if (root.Bokeh !== undefined || force === true) {\n",
       "      \n",
       "    for (var i = 0; i < inline_js.length; i++) {\n",
       "      inline_js[i].call(root, root.Bokeh);\n",
       "    }\n",
       "    if (force === true) {\n",
       "        display_loaded();\n",
       "      }} else if (Date.now() < root._bokeh_timeout) {\n",
       "      setTimeout(run_inline_js, 100);\n",
       "    } else if (!root._bokeh_failed_load) {\n",
       "      console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
       "      root._bokeh_failed_load = true;\n",
       "    } else if (force !== true) {\n",
       "      var cell = $(document.getElementById(\"4180\")).parents('.cell').data().cell;\n",
       "      cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
       "    }\n",
       "\n",
       "  }\n",
       "\n",
       "  if (root._bokeh_is_loading === 0) {\n",
       "    console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
       "    run_inline_js();\n",
       "  } else {\n",
       "    load_libs(css_urls, js_urls, function() {\n",
       "      console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n",
       "      run_inline_js();\n",
       "    });\n",
       "  }\n",
       "}(window));"
      ],
      "application/vnd.bokehjs_load.v0+json": "\n(function(root) {\n  function now() {\n    return new Date();\n  }\n\n  var force = true;\n\n  if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n    root._bokeh_onload_callbacks = [];\n    root._bokeh_is_loading = undefined;\n  }\n\n  \n\n  \n  if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n    root._bokeh_timeout = Date.now() + 5000;\n    root._bokeh_failed_load = false;\n  }\n\n  var NB_LOAD_WARNING = {'data': {'text/html':\n     \"<div style='background-color: #fdd'>\\n\"+\n     \"<p>\\n\"+\n     \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n     \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n     \"</p>\\n\"+\n     \"<ul>\\n\"+\n     \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n     \"<li>use INLINE resources instead, as so:</li>\\n\"+\n     \"</ul>\\n\"+\n     \"<code>\\n\"+\n     \"from bokeh.resources import INLINE\\n\"+\n     \"output_notebook(resources=INLINE)\\n\"+\n     \"</code>\\n\"+\n     \"</div>\"}};\n\n  function display_loaded() {\n    var el = document.getElementById(\"4180\");\n    if (el != null) {\n      el.textContent = \"BokehJS is loading...\";\n    }\n    if (root.Bokeh !== undefined) {\n      if (el != null) {\n        el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n      }\n    } else if (Date.now() < root._bokeh_timeout) {\n      setTimeout(display_loaded, 100)\n    }\n  }\n\n\n  function run_callbacks() {\n    try {\n      root._bokeh_onload_callbacks.forEach(function(callback) {\n        if (callback != null)\n          callback();\n      });\n    } finally {\n      delete root._bokeh_onload_callbacks\n    }\n    console.debug(\"Bokeh: all callbacks have finished\");\n  }\n\n  function load_libs(css_urls, js_urls, callback) {\n    if (css_urls == null) css_urls = [];\n    if (js_urls == null) js_urls = [];\n\n    root._bokeh_onload_callbacks.push(callback);\n    if (root._bokeh_is_loading > 0) {\n      console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n      return null;\n    }\n    if (js_urls == null || js_urls.length === 0) {\n      run_callbacks();\n      return null;\n    }\n    console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n    root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n    function on_load() {\n      root._bokeh_is_loading--;\n      if (root._bokeh_is_loading === 0) {\n        console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n        run_callbacks()\n      }\n    }\n\n    function on_error() {\n      console.error(\"failed to load \" + url);\n    }\n\n    for (var i = 0; i < css_urls.length; i++) {\n      var url = css_urls[i];\n      const element = document.createElement(\"link\");\n      element.onload = on_load;\n      element.onerror = on_error;\n      element.rel = \"stylesheet\";\n      element.type = \"text/css\";\n      element.href = url;\n      console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n      document.body.appendChild(element);\n    }\n\n    const hashes = {\"https://cdn.bokeh.org/bokeh/release/bokeh-2.2.3.min.js\": \"T2yuo9Oe71Cz/I4X9Ac5+gpEa5a8PpJCDlqKYO0CfAuEszu1JrXLl8YugMqYe3sM\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.2.3.min.js\": \"98GDGJ0kOMCUMUePhksaQ/GYgB3+NH9h996V88sh3aOiUNX3N+fLXAtry6xctSZ6\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.2.3.min.js\": \"89bArO+nlbP3sgakeHjCo1JYxYR5wufVgA3IbUvDY+K7w4zyxJqssu7wVnfeKCq8\"};\n\n    for (var i = 0; i < js_urls.length; i++) {\n      var url = js_urls[i];\n      var element = document.createElement('script');\n      element.onload = on_load;\n      element.onerror = on_error;\n      element.async = false;\n      element.src = url;\n      if (url in hashes) {\n        element.crossOrigin = \"anonymous\";\n        element.integrity = \"sha384-\" + hashes[url];\n      }\n      console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n      document.head.appendChild(element);\n    }\n  };\n\n  function inject_raw_css(css) {\n    const element = document.createElement(\"style\");\n    element.appendChild(document.createTextNode(css));\n    document.body.appendChild(element);\n  }\n\n  \n  var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.2.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.2.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.2.3.min.js\"];\n  var css_urls = [];\n  \n\n  var inline_js = [\n    function(Bokeh) {\n      Bokeh.set_log_level(\"info\");\n    },\n    function(Bokeh) {\n    \n    \n    }\n  ];\n\n  function run_inline_js() {\n    \n    if (root.Bokeh !== undefined || force === true) {\n      \n    for (var i = 0; i < inline_js.length; i++) {\n      inline_js[i].call(root, root.Bokeh);\n    }\n    if (force === true) {\n        display_loaded();\n      }} else if (Date.now() < root._bokeh_timeout) {\n      setTimeout(run_inline_js, 100);\n    } else if (!root._bokeh_failed_load) {\n      console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n      root._bokeh_failed_load = true;\n    } else if (force !== true) {\n      var cell = $(document.getElementById(\"4180\")).parents('.cell').data().cell;\n      cell.output_area.append_execute_result(NB_LOAD_WARNING)\n    }\n\n  }\n\n  if (root._bokeh_is_loading === 0) {\n    console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n    run_inline_js();\n  } else {\n    load_libs(css_urls, js_urls, function() {\n      console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n      run_inline_js();\n    });\n  }\n}(window));"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from bokeh.plotting import figure,output_notebook,show\n",
    "output_notebook()    # 使得Bokeh可以在notebook中直接显示交互式图表"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 代码例子"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 绘制图表框架 figure()\n",
    "* plot_width, plot_weight 可以设置绘图区的宽度和高度。（实际上 width 和 height 也有同样的效果）\n",
    "* x_axis_label、y_axis_label 设置轴标签。\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "\n",
       "\n",
       "\n",
       "\n",
       "\n",
       "  <div class=\"bk-root\" id=\"a9641837-6f85-493a-9466-aa21294998ee\" data-root-id=\"1092\"></div>\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/javascript": [
       "(function(root) {\n",
       "  function embed_document(root) {\n",
       "    \n",
       "  var docs_json = {\"6ccaf6b3-262c-42d4-961b-3b49803fa279\":{\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1101\"}],\"center\":[{\"id\":\"1104\"},{\"id\":\"1108\"}],\"left\":[{\"id\":\"1105\"}],\"plot_height\":400,\"plot_width\":400,\"renderers\":[{\"id\":\"1126\"}],\"title\":{\"id\":\"1137\"},\"toolbar\":{\"id\":\"1116\"},\"x_range\":{\"id\":\"1093\"},\"x_scale\":{\"id\":\"1097\"},\"y_range\":{\"id\":\"1095\"},\"y_scale\":{\"id\":\"1099\"}},\"id\":\"1092\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1102\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis\":{\"id\":\"1101\"},\"ticker\":null},\"id\":\"1104\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1139\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"navy\"},\"line_alpha\":{\"value\":0.5},\"line_color\":{\"value\":\"navy\"},\"size\":{\"units\":\"screen\",\"value\":20},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1124\",\"type\":\"Circle\"},{\"attributes\":{\"formatter\":{\"id\":\"1139\"},\"ticker\":{\"id\":\"1106\"}},\"id\":\"1105\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1099\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1095\",\"type\":\"DataRange1d\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"1115\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"data\":{\"x\":[1,2,3,4,5],\"y\":[6,8,2,4,5]},\"selected\":{\"id\":\"1143\"},\"selection_policy\":{\"id\":\"1144\"}},\"id\":\"1123\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"axis\":{\"id\":\"1105\"},\"dimension\":1,\"ticker\":null},\"id\":\"1108\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1106\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1097\",\"type\":\"LinearScale\"},{\"attributes\":{\"source\":{\"id\":\"1123\"}},\"id\":\"1127\",\"type\":\"CDSView\"},{\"attributes\":{\"data_source\":{\"id\":\"1123\"},\"glyph\":{\"id\":\"1124\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1125\"},\"selection_glyph\":null,\"view\":{\"id\":\"1127\"}},\"id\":\"1126\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1141\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"formatter\":{\"id\":\"1141\"},\"ticker\":{\"id\":\"1102\"}},\"id\":\"1101\",\"type\":\"LinearAxis\"},{\"attributes\":{\"text\":\"\"},\"id\":\"1137\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1110\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"1109\"},{\"id\":\"1110\"},{\"id\":\"1111\"},{\"id\":\"1112\"},{\"id\":\"1113\"},{\"id\":\"1114\"}]},\"id\":\"1116\",\"type\":\"Toolbar\"},{\"attributes\":{\"overlay\":{\"id\":\"1115\"}},\"id\":\"1111\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"navy\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"navy\"},\"size\":{\"units\":\"screen\",\"value\":20},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1125\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"1112\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1113\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1114\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1093\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1143\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1109\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1144\",\"type\":\"UnionRenderers\"}],\"root_ids\":[\"1092\"]},\"title\":\"Bokeh Application\",\"version\":\"2.2.3\"}};\n",
       "  var render_items = [{\"docid\":\"6ccaf6b3-262c-42d4-961b-3b49803fa279\",\"root_ids\":[\"1092\"],\"roots\":{\"1092\":\"a9641837-6f85-493a-9466-aa21294998ee\"}}];\n",
       "  root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
       "\n",
       "  }\n",
       "  if (root.Bokeh !== undefined) {\n",
       "    embed_document(root);\n",
       "  } else {\n",
       "    var attempts = 0;\n",
       "    var timer = setInterval(function(root) {\n",
       "      if (root.Bokeh !== undefined) {\n",
       "        clearInterval(timer);\n",
       "        embed_document(root);\n",
       "      } else {\n",
       "        attempts++;\n",
       "        if (attempts > 100) {\n",
       "          clearInterval(timer);\n",
       "          console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
       "        }\n",
       "      }\n",
       "    }, 10, root)\n",
       "  }\n",
       "})(window);"
      ],
      "application/vnd.bokehjs_exec.v0+json": ""
     },
     "metadata": {
      "application/vnd.bokehjs_exec.v0+json": {
       "id": "1092"
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 数据\n",
    "x = [1,2,3,4,5]\n",
    "y = [6,8,2,4,5]\n",
    "# 设置画布、尺寸\n",
    "p = figure(plot_width=400,plot_height=400)     \n",
    "p.circle(x,y,size=20,color=\"navy\",alpha=0.5)    # alpha 表示透明度\n",
    "# 显示\n",
    "show(p)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "\n",
       "\n",
       "\n",
       "\n",
       "\n",
       "  <div class=\"bk-root\" id=\"0e5925ee-85d5-433d-a57e-a2ee7922efc2\" data-root-id=\"1191\"></div>\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/javascript": [
       "(function(root) {\n",
       "  function embed_document(root) {\n",
       "    \n",
       "  var docs_json = {\"a6af3065-0634-4a49-99c4-806d9a090c45\":{\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1202\"}],\"center\":[{\"id\":\"1205\"},{\"id\":\"1209\"}],\"left\":[{\"id\":\"1206\"}],\"plot_height\":400,\"plot_width\":400,\"renderers\":[{\"id\":\"1227\"}],\"title\":{\"id\":\"1192\"},\"toolbar\":{\"id\":\"1217\"},\"x_range\":{\"id\":\"1194\"},\"x_scale\":{\"id\":\"1198\"},\"y_range\":{\"id\":\"1196\"},\"y_scale\":{\"id\":\"1200\"}},\"id\":\"1191\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAMAAAAAAAAD4vwAAAAAAAPC/AAAAAAAA4L8AAAAAAAAAAAAAAAAAAOA/AAAAAAAA8D8AAAAAAAD4PwAAAAAAAABA\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[9]},\"y\":{\"__ndarray__\":\"AAAAAAAAEEAAAAAAAAACQAAAAAAAAPA/AAAAAAAA0D8AAAAAAAAAAAAAAAAAANA/AAAAAAAA8D8AAAAAAAACQAAAAAAAABBA\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[9]}},\"selected\":{\"id\":\"1252\"},\"selection_policy\":{\"id\":\"1253\"}},\"id\":\"1224\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"formatter\":{\"id\":\"1250\"},\"ticker\":{\"id\":\"1203\"}},\"id\":\"1202\",\"type\":\"LinearAxis\"},{\"attributes\":{\"axis\":{\"id\":\"1202\"},\"ticker\":null},\"id\":\"1205\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1194\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1214\",\"type\":\"ResetTool\"},{\"attributes\":{\"end_angle\":{\"units\":\"rad\",\"value\":4.1},\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#8888ee\"},\"inner_radius\":{\"units\":\"screen\",\"value\":10},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#8888ee\"},\"outer_radius\":{\"units\":\"screen\",\"value\":20},\"start_angle\":{\"units\":\"rad\",\"value\":0.6},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1226\",\"type\":\"AnnularWedge\"},{\"attributes\":{},\"id\":\"1200\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1210\",\"type\":\"PanTool\"},{\"attributes\":{\"source\":{\"id\":\"1224\"}},\"id\":\"1228\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1213\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1252\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1207\",\"type\":\"BasicTicker\"},{\"attributes\":{\"text\":\"annular_wedge\"},\"id\":\"1192\",\"type\":\"Title\"},{\"attributes\":{\"end_angle\":{\"units\":\"rad\",\"value\":4.1},\"fill_color\":{\"value\":\"#8888ee\"},\"inner_radius\":{\"units\":\"screen\",\"value\":10},\"line_color\":{\"value\":\"#8888ee\"},\"outer_radius\":{\"units\":\"screen\",\"value\":20},\"start_angle\":{\"units\":\"rad\",\"value\":0.6},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1225\",\"type\":\"AnnularWedge\"},{\"attributes\":{},\"id\":\"1250\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"overlay\":{\"id\":\"1216\"}},\"id\":\"1212\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"1216\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1203\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1196\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1215\",\"type\":\"HelpTool\"},{\"attributes\":{\"formatter\":{\"id\":\"1248\"},\"ticker\":{\"id\":\"1207\"}},\"id\":\"1206\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1248\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1253\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"data_source\":{\"id\":\"1224\"},\"glyph\":{\"id\":\"1225\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1226\"},\"selection_glyph\":null,\"view\":{\"id\":\"1228\"}},\"id\":\"1227\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1211\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1198\",\"type\":\"LinearScale\"},{\"attributes\":{\"axis\":{\"id\":\"1206\"},\"dimension\":1,\"ticker\":null},\"id\":\"1209\",\"type\":\"Grid\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"1210\"},{\"id\":\"1211\"},{\"id\":\"1212\"},{\"id\":\"1213\"},{\"id\":\"1214\"},{\"id\":\"1215\"}]},\"id\":\"1217\",\"type\":\"Toolbar\"}],\"root_ids\":[\"1191\"]},\"title\":\"Bokeh Application\",\"version\":\"2.2.3\"}};\n",
       "  var render_items = [{\"docid\":\"a6af3065-0634-4a49-99c4-806d9a090c45\",\"root_ids\":[\"1191\"],\"roots\":{\"1191\":\"0e5925ee-85d5-433d-a57e-a2ee7922efc2\"}}];\n",
       "  root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
       "\n",
       "  }\n",
       "  if (root.Bokeh !== undefined) {\n",
       "    embed_document(root);\n",
       "  } else {\n",
       "    var attempts = 0;\n",
       "    var timer = setInterval(function(root) {\n",
       "      if (root.Bokeh !== undefined) {\n",
       "        clearInterval(timer);\n",
       "        embed_document(root);\n",
       "      } else {\n",
       "        attempts++;\n",
       "        if (attempts > 100) {\n",
       "          clearInterval(timer);\n",
       "          console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
       "        }\n",
       "      }\n",
       "    }, 10, root)\n",
       "  }\n",
       "})(window);"
      ],
      "application/vnd.bokehjs_exec.v0+json": ""
     },
     "metadata": {
      "application/vnd.bokehjs_exec.v0+json": {
       "id": "1191"
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np      \n",
    "\n",
    "# 基本图元绘制\n",
    "\n",
    "# 数据\n",
    "N=9\n",
    "x=np.linspace(-2, 2, N)       # linspace ？\n",
    "y=x**2\n",
    "sizes = np.linspace(10, 20, N)\n",
    "xpts = np.array([-.09, -.12, .0, .12, .09])\n",
    "ypts = np.array([-.1, .02, .1, .02, -.1])\n",
    "\n",
    "# 一个画布\n",
    "p = figure(title=\"annular_wedge\",plot_width=400,plot_height=400)\n",
    "\n",
    "\n",
    "# 绘制annular_wedge环状楔\n",
    "p.annular_wedge(x, y, 10, 20, 0.6, 4.1, color=\"#8888ee\",inner_radius_units=\"screen\", outer_radius_units=\"screen\")\n",
    "## outer、inner_radius_units？\n",
    "\n",
    "\n",
    "# 显示图形\n",
    "show(p)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* numpy.linspace()函数用于在线性空间中以均匀步长生成数字序列。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "BokehDeprecationWarning: 'Oval' is deprecated and will be removed in Bokeh 3.0, use the Ellipse glyph instead\n",
      "BokehDeprecationWarning: 'Oval' is deprecated and will be removed in Bokeh 3.0, use the Ellipse glyph instead\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "\n",
       "\n",
       "\n",
       "\n",
       "\n",
       "  <div class=\"bk-root\" id=\"db302f00-077b-4a8d-a4f6-f62a3510f361\" data-root-id=\"3299\"></div>\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/javascript": [
       "(function(root) {\n",
       "  function embed_document(root) {\n",
       "    \n",
       "  var docs_json = {\"78708d3c-de7a-4aa0-8d89-dadb5b9590d0\":{\"roots\":{\"references\":[{\"attributes\":{\"children\":[{\"id\":\"3298\"},{\"id\":\"3296\"}]},\"id\":\"3299\",\"type\":\"Column\"},{\"attributes\":{\"data_source\":{\"id\":\"2944\"},\"glyph\":{\"id\":\"2945\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"2946\"},\"selection_glyph\":null,\"view\":{\"id\":\"2948\"}},\"id\":\"2947\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"text\":\"line\"},\"id\":\"3064\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"3245\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAMAAAAAAAAD4vwAAAAAAAPC/AAAAAAAA4L8AAAAAAAAAAAAAAAAAAOA/AAAAAAAA8D8AAAAAAAD4PwAAAAAAAABA\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[9]},\"y\":{\"__ndarray__\":\"AAAAAAAAEEAAAAAAAAACQAAAAAAAAPA/AAAAAAAA0D8AAAAAAAAAAAAAAAAAANA/AAAAAAAA8D8AAAAAAAACQAAAAAAAABBA\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[9]}},\"selected\":{\"id\":\"3265\"},\"selection_policy\":{\"id\":\"3266\"}},\"id\":\"3096\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"data\":{\"xs\":[{\"__ndarray__\":\"uB6F61G4AMD2KFyPwvUAwAAAAAAAAADAFK5H4XoU/r+PwvUoXI/+vw==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},{\"__ndarray__\":\"cT0K16Nw+b/sUbgehev5vwAAAAAAAPi/FK5H4XoU9r+PwvUoXI/2vw==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},{\"__ndarray__\":\"cT0K16Nw8b/sUbgehevxvwAAAAAAAPC/KVyPwvUo7L8fhetRuB7tvw==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},{\"__ndarray__\":\"4XoUrkfh4r/Xo3A9CtfjvwAAAAAAAOC/UrgehetR2L8+CtejcD3avw==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},{\"__ndarray__\":\"CtejcD0Kt7+4HoXrUbi+vwAAAAAAAAAAuB6F61G4vj8K16NwPQq3Pw==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},{\"__ndarray__\":\"PgrXo3A92j9SuB6F61HYPwAAAAAAAOA/16NwPQrX4z/hehSuR+HiPw==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},{\"__ndarray__\":\"H4XrUbge7T8pXI/C9SjsPwAAAAAAAPA/7FG4HoXr8T9xPQrXo3DxPw==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},{\"__ndarray__\":\"j8L1KFyP9j8UrkfhehT2PwAAAAAAAPg/7FG4HoXr+T9xPQrXo3D5Pw==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},{\"__ndarray__\":\"j8L1KFyP/j8UrkfhehT+PwAAAAAAAABA9ihcj8L1AEC4HoXrUbgAQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]}],\"ys\":[{\"__ndarray__\":\"MzMzMzMzD0AUrkfhehQQQGZmZmZmZhBAFK5H4XoUEEAzMzMzMzMPQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},{\"__ndarray__\":\"MzMzMzMzAUApXI/C9SgCQM3MzMzMzAJAKVyPwvUoAkAzMzMzMzMBQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},{\"__ndarray__\":\"zczMzMzM7D9SuB6F61HwP5qZmZmZmfE/UrgehetR8D/NzMzMzMzsPw==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},{\"__ndarray__\":\"MzMzMzMzwz9I4XoUrkfRP2ZmZmZmZtY/SOF6FK5H0T8zMzMzMzPDPw==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},{\"__ndarray__\":\"mpmZmZmZub97FK5H4XqUP5qZmZmZmbk/exSuR+F6lD+amZmZmZm5vw==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},{\"__ndarray__\":\"MzMzMzMzwz9I4XoUrkfRP2ZmZmZmZtY/SOF6FK5H0T8zMzMzMzPDPw==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},{\"__ndarray__\":\"zczMzMzM7D9SuB6F61HwP5qZmZmZmfE/UrgehetR8D/NzMzMzMzsPw==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},{\"__ndarray__\":\"MzMzMzMzAUApXI/C9SgCQM3MzMzMzAJAKVyPwvUoAkAzMzMzMzMBQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]},{\"__ndarray__\":\"MzMzMzMzD0AUrkfhehQQQGZmZmZmZhBAFK5H4XoUEEAzMzMzMzMPQA==\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[5]}]},\"selected\":{\"id\":\"3274\"},\"selection_policy\":{\"id\":\"3275\"}},\"id\":\"3134\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"3066\",\"type\":\"DataRange1d\"},{\"attributes\":{\"below\":[{\"id\":\"3150\"}],\"center\":[{\"id\":\"3153\"},{\"id\":\"3157\"}],\"left\":[{\"id\":\"3154\"}],\"plot_height\":200,\"plot_width\":200,\"renderers\":[{\"id\":\"3175\"}],\"title\":{\"id\":\"3140\"},\"toolbar\":{\"id\":\"3165\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"3142\"},\"x_scale\":{\"id\":\"3146\"},\"y_range\":{\"id\":\"3144\"},\"y_scale\":{\"id\":\"3148\"}},\"id\":\"3139\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"3075\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"3087\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"3068\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"3270\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"formatter\":{\"id\":\"3263\"},\"ticker\":{\"id\":\"3075\"}},\"id\":\"3074\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"3072\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"3283\",\"type\":\"Selection\"},{\"attributes\":{\"formatter\":{\"id\":\"3261\"},\"ticker\":{\"id\":\"3079\"}},\"id\":\"3078\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"3272\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"3070\",\"type\":\"LinearScale\"},{\"attributes\":{\"axis\":{\"id\":\"3074\"},\"ticker\":null},\"id\":\"3077\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"3284\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"axis\":{\"id\":\"3078\"},\"dimension\":1,\"ticker\":null},\"id\":\"3081\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"3220\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"3079\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"3221\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"3083\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"3082\",\"type\":\"PanTool\"},{\"attributes\":{\"overlay\":{\"id\":\"3088\"}},\"id\":\"3084\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"3085\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"3234\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"3086\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"3247\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"3236\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"3248\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"3120\"},{\"id\":\"3121\"},{\"id\":\"3122\"},{\"id\":\"3123\"},{\"id\":\"3124\"},{\"id\":\"3125\"}]},\"id\":\"3127\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"3274\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"3275\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"3088\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"3288\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"formatter\":{\"id\":\"3270\"},\"ticker\":{\"id\":\"3117\"}},\"id\":\"3116\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"3290\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"below\":[{\"id\":\"2884\"}],\"center\":[{\"id\":\"2887\"},{\"id\":\"2891\"}],\"left\":[{\"id\":\"2888\"}],\"plot_height\":200,\"plot_width\":200,\"renderers\":[{\"id\":\"2909\"}],\"title\":{\"id\":\"2874\"},\"toolbar\":{\"id\":\"2899\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"2876\"},\"x_scale\":{\"id\":\"2880\"},\"y_range\":{\"id\":\"2878\"},\"y_scale\":{\"id\":\"2882\"}},\"id\":\"2873\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"cx0\":{\"field\":\"cx0\"},\"cx1\":{\"field\":\"cx1\"},\"cy0\":{\"field\":\"cy0\"},\"cy1\":{\"field\":\"cy1\"},\"line_color\":{\"value\":\"#8073AC\"},\"line_width\":{\"value\":2},\"x0\":{\"field\":\"x0\"},\"x1\":{\"field\":\"x1\"},\"y0\":{\"field\":\"y0\"},\"y1\":{\"field\":\"y1\"}},\"id\":\"3021\",\"type\":\"Bezier\"},{\"attributes\":{\"end_angle\":{\"units\":\"rad\",\"value\":4.1},\"fill_color\":{\"value\":\"#8888ee\"},\"inner_radius\":{\"units\":\"screen\",\"value\":10},\"line_color\":{\"value\":\"#8888ee\"},\"outer_radius\":{\"units\":\"screen\",\"value\":20},\"start_angle\":{\"units\":\"rad\",\"value\":0.6},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2907\",\"type\":\"AnnularWedge\"},{\"attributes\":{},\"id\":\"3225\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"2956\",\"type\":\"LinearScale\"},{\"attributes\":{\"text\":\"annular_wedge\"},\"id\":\"2874\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"3238\",\"type\":\"Selection\"},{\"attributes\":{\"end_angle\":{\"units\":\"rad\",\"value\":4.1},\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#8888ee\"},\"inner_radius\":{\"units\":\"screen\",\"value\":10},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#8888ee\"},\"outer_radius\":{\"units\":\"screen\",\"value\":20},\"start_angle\":{\"units\":\"rad\",\"value\":0.6},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2908\",\"type\":\"AnnularWedge\"},{\"attributes\":{},\"id\":\"3227\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"text\":\"arc\"},\"id\":\"2950\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"2876\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"3239\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAMAAAAAAAAD4vwAAAAAAAPC/AAAAAAAA4L8AAAAAAAAAAAAAAAAAAOA/AAAAAAAA8D8AAAAAAAD4PwAAAAAAAABA\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[9]},\"y\":{\"__ndarray__\":\"AAAAAAAAEEAAAAAAAAACQAAAAAAAAPA/AAAAAAAA0D8AAAAAAAAAAAAAAAAAANA/AAAAAAAA8D8AAAAAAAACQAAAAAAAABBA\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[9]}},\"selected\":{\"id\":\"3220\"},\"selection_policy\":{\"id\":\"3221\"}},\"id\":\"2906\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"2885\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"2897\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"2878\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"3252\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"formatter\":{\"id\":\"3218\"},\"ticker\":{\"id\":\"2885\"}},\"id\":\"2884\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"2882\",\"type\":\"LinearScale\"},{\"attributes\":{\"formatter\":{\"id\":\"3216\"},\"ticker\":{\"id\":\"2889\"}},\"id\":\"2888\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"3106\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"3254\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"2880\",\"type\":\"LinearScale\"},{\"attributes\":{\"axis\":{\"id\":\"2884\"},\"ticker\":null},\"id\":\"2887\",\"type\":\"Grid\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"3082\"},{\"id\":\"3083\"},{\"id\":\"3084\"},{\"id\":\"3085\"},{\"id\":\"3086\"},{\"id\":\"3087\"}]},\"id\":\"3089\",\"type\":\"Toolbar\"},{\"attributes\":{\"below\":[{\"id\":\"2960\"}],\"center\":[{\"id\":\"2963\"},{\"id\":\"2967\"}],\"left\":[{\"id\":\"2964\"}],\"plot_height\":200,\"plot_width\":200,\"renderers\":[{\"id\":\"2985\"}],\"title\":{\"id\":\"2950\"},\"toolbar\":{\"id\":\"2975\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"2952\"},\"x_scale\":{\"id\":\"2956\"},\"y_range\":{\"id\":\"2954\"},\"y_scale\":{\"id\":\"2958\"}},\"id\":\"2949\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"axis\":{\"id\":\"2888\"},\"dimension\":1,\"ticker\":null},\"id\":\"2891\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"3279\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"2889\",\"type\":\"BasicTicker\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#F46D43\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"3098\",\"type\":\"Line\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"2892\"},{\"id\":\"2893\"},{\"id\":\"2894\"},{\"id\":\"2895\"},{\"id\":\"2896\"},{\"id\":\"2897\"}]},\"id\":\"2899\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"3104\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"3292\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"2893\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"3281\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"2892\",\"type\":\"PanTool\"},{\"attributes\":{\"line_color\":\"#F46D43\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"3097\",\"type\":\"Line\"},{\"attributes\":{\"fill_alpha\":0.1,\"fill_color\":\"#F46D43\",\"line_alpha\":0.1,\"line_color\":\"#F46D43\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"3212\",\"type\":\"Patch\"},{\"attributes\":{\"overlay\":{\"id\":\"2898\"}},\"id\":\"2894\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"3293\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"2895\",\"type\":\"SaveTool\"},{\"attributes\":{\"source\":{\"id\":\"3096\"}},\"id\":\"3100\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"2896\",\"type\":\"ResetTool\"},{\"attributes\":{\"text\":\"multi_line\"},\"id\":\"3102\",\"type\":\"Title\"},{\"attributes\":{\"data_source\":{\"id\":\"3134\"},\"glyph\":{\"id\":\"3135\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"3136\"},\"selection_glyph\":null,\"view\":{\"id\":\"3138\"}},\"id\":\"3137\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"axis\":{\"id\":\"2960\"},\"ticker\":null},\"id\":\"2963\",\"type\":\"Grid\"},{\"attributes\":{\"data_source\":{\"id\":\"3210\"},\"glyph\":{\"id\":\"3211\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"3212\"},\"selection_glyph\":null,\"view\":{\"id\":\"3214\"}},\"id\":\"3213\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAMAAAAAAAAD4vwAAAAAAAPC/AAAAAAAA4L8AAAAAAAAAAAAAAAAAAOA/AAAAAAAA8D8AAAAAAAD4PwAAAAAAAABA\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[9]},\"y\":{\"__ndarray__\":\"AAAAAAAAEEAAAAAAAAACQAAAAAAAAPA/AAAAAAAA0D8AAAAAAAAAAAAAAAAAANA/AAAAAAAA8D8AAAAAAAACQAAAAAAAABBA\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[9]}},\"selected\":{\"id\":\"3283\"},\"selection_policy\":{\"id\":\"3284\"}},\"id\":\"3172\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"axis\":{\"id\":\"2964\"},\"dimension\":1,\"ticker\":null},\"id\":\"2967\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"3113\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"3229\",\"type\":\"Selection\"},{\"attributes\":{\"formatter\":{\"id\":\"3236\"},\"ticker\":{\"id\":\"2961\"}},\"id\":\"2960\",\"type\":\"LinearAxis\"},{\"attributes\":{\"formatter\":{\"id\":\"3272\"},\"ticker\":{\"id\":\"3113\"}},\"id\":\"3112\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"3230\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"formatter\":{\"id\":\"3234\"},\"ticker\":{\"id\":\"2965\"}},\"id\":\"2964\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"3110\",\"type\":\"LinearScale\"},{\"attributes\":{\"axis\":{\"id\":\"3116\"},\"dimension\":1,\"ticker\":null},\"id\":\"3119\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"3108\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"2961\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis\":{\"id\":\"3112\"},\"ticker\":null},\"id\":\"3115\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"3243\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"2965\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"2958\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"3117\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"3256\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"3120\",\"type\":\"PanTool\"},{\"attributes\":{\"overlay\":{\"id\":\"3126\"}},\"id\":\"3122\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"3148\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"3257\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"3121\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"3050\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"3125\",\"type\":\"HelpTool\"},{\"attributes\":{\"source\":{\"id\":\"3058\"}},\"id\":\"3062\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"3123\",\"type\":\"SaveTool\"},{\"attributes\":{\"below\":[{\"id\":\"3188\"}],\"center\":[{\"id\":\"3191\"},{\"id\":\"3195\"}],\"left\":[{\"id\":\"3192\"}],\"plot_height\":200,\"plot_width\":200,\"renderers\":[{\"id\":\"3213\"}],\"title\":{\"id\":\"3178\"},\"toolbar\":{\"id\":\"3203\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"3180\"},\"x_scale\":{\"id\":\"3184\"},\"y_range\":{\"id\":\"3182\"},\"y_scale\":{\"id\":\"3186\"}},\"id\":\"3177\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"3124\",\"type\":\"ResetTool\"},{\"attributes\":{\"axis\":{\"id\":\"2926\"},\"dimension\":1,\"ticker\":null},\"id\":\"2929\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"3146\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"3144\",\"type\":\"DataRange1d\"},{\"attributes\":{\"data_source\":{\"id\":\"3172\"},\"glyph\":{\"id\":\"3173\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"3174\"},\"selection_glyph\":null,\"view\":{\"id\":\"3176\"}},\"id\":\"3175\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#8073AC\"},\"line_width\":{\"value\":2},\"xs\":{\"field\":\"xs\"},\"ys\":{\"field\":\"ys\"}},\"id\":\"3136\",\"type\":\"MultiLine\"},{\"attributes\":{\"data_source\":{\"id\":\"3058\"},\"glyph\":{\"id\":\"3059\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"3060\"},\"selection_glyph\":null,\"view\":{\"id\":\"3062\"}},\"id\":\"3061\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"text\":\"patch\"},\"id\":\"3178\",\"type\":\"Title\"},{\"attributes\":{\"angle\":{\"units\":\"rad\",\"value\":-0.7},\"fill_color\":{\"value\":\"#1D91C0\"},\"height\":{\"units\":\"screen\",\"value\":25},\"line_color\":{\"value\":\"#1D91C0\"},\"width\":{\"units\":\"screen\",\"value\":15},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"3173\",\"type\":\"Oval\"},{\"attributes\":{\"fill_color\":\"#F46D43\",\"line_color\":\"#F46D43\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"3211\",\"type\":\"Patch\"},{\"attributes\":{\"text\":\"oval\"},\"id\":\"3140\",\"type\":\"Title\"},{\"attributes\":{\"source\":{\"id\":\"3172\"}},\"id\":\"3176\",\"type\":\"CDSView\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"3012\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"2898\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"overlay\":{\"id\":\"3050\"}},\"id\":\"3046\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"3180\",\"type\":\"DataRange1d\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAMAAAAAAAAD4vwAAAAAAAPC/AAAAAAAA4L8AAAAAAAAAAAAAAAAAAOA/AAAAAAAA8D8AAAAAAAD4PwAAAAAAAABA\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[9]},\"y\":{\"__ndarray__\":\"AAAAAAAAEEAAAAAAAAACQAAAAAAAAPA/AAAAAAAA0D8AAAAAAAAAAAAAAAAAANA/AAAAAAAA8D8AAAAAAAACQAAAAAAAABBA\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[9]}},\"selected\":{\"id\":\"3292\"},\"selection_policy\":{\"id\":\"3293\"}},\"id\":\"3210\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"3189\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"3201\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"3182\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"2954\",\"type\":\"DataRange1d\"},{\"attributes\":{\"formatter\":{\"id\":\"3290\"},\"ticker\":{\"id\":\"3189\"}},\"id\":\"3188\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"3186\",\"type\":\"LinearScale\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"2974\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"source\":{\"id\":\"2906\"}},\"id\":\"2910\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"3048\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"2952\",\"type\":\"DataRange1d\"},{\"attributes\":{\"formatter\":{\"id\":\"3288\"},\"ticker\":{\"id\":\"3193\"}},\"id\":\"3192\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"3184\",\"type\":\"LinearScale\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"3126\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"end_angle\":{\"units\":\"rad\",\"value\":4.1},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#BEAED4\"},\"line_width\":{\"value\":3},\"radius\":{\"units\":\"screen\",\"value\":20},\"start_angle\":{\"units\":\"rad\",\"value\":0.6},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2984\",\"type\":\"Arc\"},{\"attributes\":{\"axis\":{\"id\":\"3188\"},\"ticker\":null},\"id\":\"3191\",\"type\":\"Grid\"},{\"attributes\":{\"axis\":{\"id\":\"2922\"},\"ticker\":null},\"id\":\"2925\",\"type\":\"Grid\"},{\"attributes\":{\"axis\":{\"id\":\"3192\"},\"dimension\":1,\"ticker\":null},\"id\":\"3195\",\"type\":\"Grid\"},{\"attributes\":{\"end_angle\":{\"units\":\"rad\",\"value\":4.1},\"line_color\":{\"value\":\"#BEAED4\"},\"line_width\":{\"value\":3},\"radius\":{\"units\":\"screen\",\"value\":20},\"start_angle\":{\"units\":\"rad\",\"value\":0.6},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2983\",\"type\":\"Arc\"},{\"attributes\":{\"line_color\":{\"value\":\"#8073AC\"},\"line_width\":{\"value\":2},\"xs\":{\"field\":\"xs\"},\"ys\":{\"field\":\"ys\"}},\"id\":\"3135\",\"type\":\"MultiLine\"},{\"attributes\":{},\"id\":\"2923\",\"type\":\"BasicTicker\"},{\"attributes\":{\"source\":{\"id\":\"3134\"}},\"id\":\"3138\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"3193\",\"type\":\"BasicTicker\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAMAAAAAAAAD4vwAAAAAAAPC/AAAAAAAA4L8AAAAAAAAAAAAAAAAAAOA/AAAAAAAA8D8AAAAAAAD4PwAAAAAAAABA\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[9]},\"y\":{\"__ndarray__\":\"AAAAAAAAEEAAAAAAAAACQAAAAAAAAPA/AAAAAAAA0D8AAAAAAAAAAAAAAAAAANA/AAAAAAAA8D8AAAAAAAACQAAAAAAAABBA\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[9]}},\"selected\":{\"id\":\"3238\"},\"selection_policy\":{\"id\":\"3239\"}},\"id\":\"2982\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"3197\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"2927\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"3261\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"2968\"},{\"id\":\"2969\"},{\"id\":\"2970\"},{\"id\":\"2971\"},{\"id\":\"2972\"},{\"id\":\"2973\"}]},\"id\":\"2975\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"3196\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"3151\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"2930\",\"type\":\"PanTool\"},{\"attributes\":{\"overlay\":{\"id\":\"3202\"}},\"id\":\"3198\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"3030\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"3199\",\"type\":\"SaveTool\"},{\"attributes\":{\"formatter\":{\"id\":\"3279\"},\"ticker\":{\"id\":\"3155\"}},\"id\":\"3154\",\"type\":\"LinearAxis\"},{\"attributes\":{\"formatter\":{\"id\":\"3281\"},\"ticker\":{\"id\":\"3151\"}},\"id\":\"3150\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"3163\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"3200\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"3263\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"axis\":{\"id\":\"3150\"},\"ticker\":null},\"id\":\"3153\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"2914\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"2935\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"3010\",\"type\":\"ResetTool\"},{\"attributes\":{\"data_source\":{\"id\":\"3020\"},\"glyph\":{\"id\":\"3021\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"3022\"},\"selection_glyph\":null,\"view\":{\"id\":\"3024\"}},\"id\":\"3023\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"axis\":{\"id\":\"3154\"},\"dimension\":1,\"ticker\":null},\"id\":\"3157\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"2968\",\"type\":\"PanTool\"},{\"attributes\":{\"below\":[{\"id\":\"3036\"}],\"center\":[{\"id\":\"3039\"},{\"id\":\"3043\"}],\"left\":[{\"id\":\"3040\"}],\"plot_height\":200,\"plot_width\":200,\"renderers\":[{\"id\":\"3061\"}],\"title\":{\"id\":\"3026\"},\"toolbar\":{\"id\":\"3051\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"3028\"},\"x_scale\":{\"id\":\"3032\"},\"y_range\":{\"id\":\"3030\"},\"y_scale\":{\"id\":\"3034\"}},\"id\":\"3025\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"3155\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"2931\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"source\":{\"id\":\"3020\"}},\"id\":\"3024\",\"type\":\"CDSView\"},{\"attributes\":{\"text\":\"annulus\"},\"id\":\"2912\",\"type\":\"Title\"},{\"attributes\":{\"angle\":{\"units\":\"rad\",\"value\":-0.7},\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1D91C0\"},\"height\":{\"units\":\"screen\",\"value\":25},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1D91C0\"},\"width\":{\"units\":\"screen\",\"value\":15},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"3174\",\"type\":\"Oval\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"3158\"},{\"id\":\"3159\"},{\"id\":\"3160\"},{\"id\":\"3161\"},{\"id\":\"3162\"},{\"id\":\"3163\"}]},\"id\":\"3165\",\"type\":\"Toolbar\"},{\"attributes\":{\"text\":\"circle\"},\"id\":\"3026\",\"type\":\"Title\"},{\"attributes\":{\"source\":{\"id\":\"2944\"}},\"id\":\"2948\",\"type\":\"CDSView\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"2930\"},{\"id\":\"2931\"},{\"id\":\"2932\"},{\"id\":\"2933\"},{\"id\":\"2934\"},{\"id\":\"2935\"}]},\"id\":\"2937\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"3159\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"3158\",\"type\":\"PanTool\"},{\"attributes\":{\"data_source\":{\"id\":\"3096\"},\"glyph\":{\"id\":\"3097\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"3098\"},\"selection_glyph\":null,\"view\":{\"id\":\"3100\"}},\"id\":\"3099\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"overlay\":{\"id\":\"3164\"}},\"id\":\"3160\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"data_source\":{\"id\":\"2906\"},\"glyph\":{\"id\":\"2907\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"2908\"},\"selection_glyph\":null,\"view\":{\"id\":\"2910\"}},\"id\":\"2909\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"3028\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"3161\",\"type\":\"SaveTool\"},{\"attributes\":{\"formatter\":{\"id\":\"3227\"},\"ticker\":{\"id\":\"2923\"}},\"id\":\"2922\",\"type\":\"LinearAxis\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAMAAAAAAAAD4vwAAAAAAAPC/AAAAAAAA4L8AAAAAAAAAAAAAAAAAAOA/AAAAAAAA8D8AAAAAAAD4PwAAAAAAAABA\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[9]},\"y\":{\"__ndarray__\":\"AAAAAAAAEEAAAAAAAAACQAAAAAAAAPA/AAAAAAAA0D8AAAAAAAAAAAAAAAAAANA/AAAAAAAA8D8AAAAAAAACQAAAAAAAABBA\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[9]}},\"selected\":{\"id\":\"3256\"},\"selection_policy\":{\"id\":\"3257\"}},\"id\":\"3058\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"2933\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"3162\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"2992\",\"type\":\"DataRange1d\"},{\"attributes\":{\"below\":[{\"id\":\"2922\"}],\"center\":[{\"id\":\"2925\"},{\"id\":\"2929\"}],\"left\":[{\"id\":\"2926\"}],\"plot_height\":200,\"plot_width\":200,\"renderers\":[{\"id\":\"2947\"}],\"title\":{\"id\":\"2912\"},\"toolbar\":{\"id\":\"2937\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"2914\"},\"x_scale\":{\"id\":\"2918\"},\"y_range\":{\"id\":\"2916\"},\"y_scale\":{\"id\":\"2920\"}},\"id\":\"2911\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"3202\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"3037\",\"type\":\"BasicTicker\"},{\"attributes\":{\"formatter\":{\"id\":\"3254\"},\"ticker\":{\"id\":\"3037\"}},\"id\":\"3036\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"3218\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"3034\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"2920\",\"type\":\"LinearScale\"},{\"attributes\":{\"formatter\":{\"id\":\"3252\"},\"ticker\":{\"id\":\"3041\"}},\"id\":\"3040\",\"type\":\"LinearAxis\"},{\"attributes\":{\"toolbars\":[{\"id\":\"2899\"},{\"id\":\"2937\"},{\"id\":\"2975\"},{\"id\":\"3013\"},{\"id\":\"3051\"},{\"id\":\"3089\"},{\"id\":\"3127\"},{\"id\":\"3165\"},{\"id\":\"3203\"}],\"tools\":[{\"id\":\"2892\"},{\"id\":\"2893\"},{\"id\":\"2894\"},{\"id\":\"2895\"},{\"id\":\"2896\"},{\"id\":\"2897\"},{\"id\":\"2930\"},{\"id\":\"2931\"},{\"id\":\"2932\"},{\"id\":\"2933\"},{\"id\":\"2934\"},{\"id\":\"2935\"},{\"id\":\"2968\"},{\"id\":\"2969\"},{\"id\":\"2970\"},{\"id\":\"2971\"},{\"id\":\"2972\"},{\"id\":\"2973\"},{\"id\":\"3006\"},{\"id\":\"3007\"},{\"id\":\"3008\"},{\"id\":\"3009\"},{\"id\":\"3010\"},{\"id\":\"3011\"},{\"id\":\"3044\"},{\"id\":\"3045\"},{\"id\":\"3046\"},{\"id\":\"3047\"},{\"id\":\"3048\"},{\"id\":\"3049\"},{\"id\":\"3082\"},{\"id\":\"3083\"},{\"id\":\"3084\"},{\"id\":\"3085\"},{\"id\":\"3086\"},{\"id\":\"3087\"},{\"id\":\"3120\"},{\"id\":\"3121\"},{\"id\":\"3122\"},{\"id\":\"3123\"},{\"id\":\"3124\"},{\"id\":\"3125\"},{\"id\":\"3158\"},{\"id\":\"3159\"},{\"id\":\"3160\"},{\"id\":\"3161\"},{\"id\":\"3162\"},{\"id\":\"3163\"},{\"id\":\"3196\"},{\"id\":\"3197\"},{\"id\":\"3198\"},{\"id\":\"3199\"},{\"id\":\"3200\"},{\"id\":\"3201\"}]},\"id\":\"3297\",\"type\":\"ProxyToolbar\"},{\"attributes\":{\"overlay\":{\"id\":\"2936\"}},\"id\":\"2932\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"axis\":{\"id\":\"2998\"},\"ticker\":null},\"id\":\"3001\",\"type\":\"Grid\"},{\"attributes\":{\"axis\":{\"id\":\"3036\"},\"ticker\":null},\"id\":\"3039\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"3032\",\"type\":\"LinearScale\"},{\"attributes\":{\"formatter\":{\"id\":\"3225\"},\"ticker\":{\"id\":\"2927\"}},\"id\":\"2926\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"2918\",\"type\":\"LinearScale\"},{\"attributes\":{\"fill_color\":{\"value\":\"#3288BD\"},\"line_color\":{\"value\":\"#3288BD\"},\"radius\":{\"units\":\"data\",\"value\":0.1},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"3059\",\"type\":\"Circle\"},{\"attributes\":{\"source\":{\"id\":\"2982\"}},\"id\":\"2986\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"3265\",\"type\":\"Selection\"},{\"attributes\":{\"text\":\"bezier\"},\"id\":\"2988\",\"type\":\"Title\"},{\"attributes\":{\"axis\":{\"id\":\"3040\"},\"dimension\":1,\"ticker\":null},\"id\":\"3043\",\"type\":\"Grid\"},{\"attributes\":{\"overlay\":{\"id\":\"3012\"}},\"id\":\"3008\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"3041\",\"type\":\"BasicTicker\"},{\"attributes\":{\"below\":[{\"id\":\"2998\"}],\"center\":[{\"id\":\"3001\"},{\"id\":\"3005\"}],\"left\":[{\"id\":\"3002\"}],\"plot_height\":200,\"plot_width\":200,\"renderers\":[{\"id\":\"3023\"}],\"title\":{\"id\":\"2988\"},\"toolbar\":{\"id\":\"3013\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"2990\"},\"x_scale\":{\"id\":\"2994\"},\"y_range\":{\"id\":\"2992\"},\"y_scale\":{\"id\":\"2996\"}},\"id\":\"2987\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"3142\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"3266\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"data_source\":{\"id\":\"2982\"},\"glyph\":{\"id\":\"2983\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"2984\"},\"selection_glyph\":null,\"view\":{\"id\":\"2986\"}},\"id\":\"2985\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"3216\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"AAAAAAAAAMAAAAAAAAD4vwAAAAAAAPC/AAAAAAAA4L8AAAAAAAAAAAAAAAAAAOA/AAAAAAAA8D8AAAAAAAD4PwAAAAAAAABA\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[9]},\"y\":{\"__ndarray__\":\"AAAAAAAAEEAAAAAAAAACQAAAAAAAAPA/AAAAAAAA0D8AAAAAAAAAAAAAAAAAANA/AAAAAAAA8D8AAAAAAAACQAAAAAAAABBA\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[9]}},\"selected\":{\"id\":\"3229\"},\"selection_policy\":{\"id\":\"3230\"}},\"id\":\"2944\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"2973\",\"type\":\"HelpTool\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"3164\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"3009\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"3044\",\"type\":\"PanTool\"},{\"attributes\":{\"below\":[{\"id\":\"3074\"}],\"center\":[{\"id\":\"3077\"},{\"id\":\"3081\"}],\"left\":[{\"id\":\"3078\"}],\"plot_height\":200,\"plot_width\":200,\"renderers\":[{\"id\":\"3099\"}],\"title\":{\"id\":\"3064\"},\"toolbar\":{\"id\":\"3089\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"3066\"},\"x_scale\":{\"id\":\"3070\"},\"y_range\":{\"id\":\"3068\"},\"y_scale\":{\"id\":\"3072\"}},\"id\":\"3063\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"fill_color\":{\"value\":\"#7FC97F\"},\"inner_radius\":{\"units\":\"screen\",\"value\":10},\"line_color\":{\"value\":\"#7FC97F\"},\"outer_radius\":{\"units\":\"screen\",\"value\":20},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2945\",\"type\":\"Annulus\"},{\"attributes\":{},\"id\":\"3045\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"2990\",\"type\":\"DataRange1d\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#7FC97F\"},\"inner_radius\":{\"units\":\"screen\",\"value\":10},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#7FC97F\"},\"outer_radius\":{\"units\":\"screen\",\"value\":20},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2946\",\"type\":\"Annulus\"},{\"attributes\":{},\"id\":\"3049\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"2999\",\"type\":\"BasicTicker\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"2936\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"3011\",\"type\":\"HelpTool\"},{\"attributes\":{\"data\":{\"cx0\":{\"__ndarray__\":\"ZmZmZmZm/r9mZmZmZmb2v83MzMzMzOy/mpmZmZmZ2b+amZmZmZm5PzMzMzMzM+M/mpmZmZmZ8T+amZmZmZn5P83MzMzMzABA\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[9]},\"cx1\":{\"__ndarray__\":\"zczMzMzMAMCamZmZmZn5v5qZmZmZmfG/MzMzMzMz47+amZmZmZm5v5qZmZmZmdk/zczMzMzM7D9mZmZmZmb2P2ZmZmZmZv4/\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[9]},\"cy0\":{\"__ndarray__\":\"ZmZmZmZmEEDNzMzMzMwCQJqZmZmZmfE/ZmZmZmZm1j+amZmZmZm5P2ZmZmZmZtY/mpmZmZmZ8T/NzMzMzMwCQGZmZmZmZhBA\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[9]},\"cy1\":{\"__ndarray__\":\"MzMzMzMzD0AzMzMzMzMBQM3MzMzMzOw/MzMzMzMzwz+amZmZmZm5vzMzMzMzM8M/zczMzMzM7D8zMzMzMzMBQDMzMzMzMw9A\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[9]},\"x0\":{\"__ndarray__\":\"AAAAAAAAAMAAAAAAAAD4vwAAAAAAAPC/AAAAAAAA4L8AAAAAAAAAAAAAAAAAAOA/AAAAAAAA8D8AAAAAAAD4PwAAAAAAAABA\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[9]},\"x1\":{\"__ndarray__\":\"zczMzMzM/L/NzMzMzMz0v5qZmZmZmem/MzMzMzMz07+amZmZmZnJP2ZmZmZmZuY/MzMzMzMz8z8zMzMzMzP7P5qZmZmZmQFA\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[9]},\"y0\":{\"__ndarray__\":\"AAAAAAAAEEAAAAAAAAACQAAAAAAAAPA/AAAAAAAA0D8AAAAAAAAAAAAAAAAAANA/AAAAAAAA8D8AAAAAAAACQAAAAAAAABBA\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[9]},\"y1\":{\"__ndarray__\":\"AAAAAAAAEEAAAAAAAAACQAAAAAAAAPA/AAAAAAAA0D8AAAAAAAAAAAAAAAAAANA/AAAAAAAA8D8AAAAAAAACQAAAAAAAABBA\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[9]}},\"selected\":{\"id\":\"3247\"},\"selection_policy\":{\"id\":\"3248\"}},\"id\":\"3020\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"2916\",\"type\":\"DataRange1d\"},{\"attributes\":{\"formatter\":{\"id\":\"3245\"},\"ticker\":{\"id\":\"2999\"}},\"id\":\"2998\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"2969\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"2996\",\"type\":\"LinearScale\"},{\"attributes\":{\"source\":{\"id\":\"3210\"}},\"id\":\"3214\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"2934\",\"type\":\"ResetTool\"},{\"attributes\":{\"formatter\":{\"id\":\"3243\"},\"ticker\":{\"id\":\"3003\"}},\"id\":\"3002\",\"type\":\"LinearAxis\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"3044\"},{\"id\":\"3045\"},{\"id\":\"3046\"},{\"id\":\"3047\"},{\"id\":\"3048\"},{\"id\":\"3049\"}]},\"id\":\"3051\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"2994\",\"type\":\"LinearScale\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"3196\"},{\"id\":\"3197\"},{\"id\":\"3198\"},{\"id\":\"3199\"},{\"id\":\"3200\"},{\"id\":\"3201\"}]},\"id\":\"3203\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"2972\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"2971\",\"type\":\"SaveTool\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#3288BD\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#3288BD\"},\"radius\":{\"units\":\"data\",\"value\":0.1},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"3060\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"3003\",\"type\":\"BasicTicker\"},{\"attributes\":{\"toolbar\":{\"id\":\"3297\"},\"toolbar_location\":\"above\"},\"id\":\"3298\",\"type\":\"ToolbarBox\"},{\"attributes\":{\"overlay\":{\"id\":\"2974\"}},\"id\":\"2970\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"axis\":{\"id\":\"3002\"},\"dimension\":1,\"ticker\":null},\"id\":\"3005\",\"type\":\"Grid\"},{\"attributes\":{\"below\":[{\"id\":\"3112\"}],\"center\":[{\"id\":\"3115\"},{\"id\":\"3119\"}],\"left\":[{\"id\":\"3116\"}],\"plot_height\":200,\"plot_width\":200,\"renderers\":[{\"id\":\"3137\"}],\"title\":{\"id\":\"3102\"},\"toolbar\":{\"id\":\"3127\"},\"toolbar_location\":null,\"x_range\":{\"id\":\"3104\"},\"x_scale\":{\"id\":\"3108\"},\"y_range\":{\"id\":\"3106\"},\"y_scale\":{\"id\":\"3110\"}},\"id\":\"3101\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"cx0\":{\"field\":\"cx0\"},\"cx1\":{\"field\":\"cx1\"},\"cy0\":{\"field\":\"cy0\"},\"cy1\":{\"field\":\"cy1\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#8073AC\"},\"line_width\":{\"value\":2},\"x0\":{\"field\":\"x0\"},\"x1\":{\"field\":\"x1\"},\"y0\":{\"field\":\"y0\"},\"y1\":{\"field\":\"y1\"}},\"id\":\"3022\",\"type\":\"Bezier\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"3006\"},{\"id\":\"3007\"},{\"id\":\"3008\"},{\"id\":\"3009\"},{\"id\":\"3010\"},{\"id\":\"3011\"}]},\"id\":\"3013\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"3047\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"3006\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"3007\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"children\":[[{\"id\":\"2873\"},0,0],[{\"id\":\"2911\"},0,1],[{\"id\":\"2949\"},0,2],[{\"id\":\"2987\"},0,3],[{\"id\":\"3025\"},1,0],[{\"id\":\"3063\"},1,1],[{\"id\":\"3101\"},1,2],[{\"id\":\"3139\"},1,3],[{\"id\":\"3177\"},2,0]]},\"id\":\"3296\",\"type\":\"GridBox\"}],\"root_ids\":[\"3299\"]},\"title\":\"Bokeh Application\",\"version\":\"2.2.3\"}};\n",
       "  var render_items = [{\"docid\":\"78708d3c-de7a-4aa0-8d89-dadb5b9590d0\",\"root_ids\":[\"3299\"],\"roots\":{\"3299\":\"db302f00-077b-4a8d-a4f6-f62a3510f361\"}}];\n",
       "  root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
       "\n",
       "  }\n",
       "  if (root.Bokeh !== undefined) {\n",
       "    embed_document(root);\n",
       "  } else {\n",
       "    var attempts = 0;\n",
       "    var timer = setInterval(function(root) {\n",
       "      if (root.Bokeh !== undefined) {\n",
       "        clearInterval(timer);\n",
       "        embed_document(root);\n",
       "      } else {\n",
       "        attempts++;\n",
       "        if (attempts > 100) {\n",
       "          clearInterval(timer);\n",
       "          console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
       "        }\n",
       "      }\n",
       "    }, 10, root)\n",
       "  }\n",
       "})(window);"
      ],
      "application/vnd.bokehjs_exec.v0+json": ""
     },
     "metadata": {
      "application/vnd.bokehjs_exec.v0+json": {
       "id": "3299"
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "from bokeh.layouts import gridplot\n",
    "\n",
    "# 基本图元绘制\n",
    "\n",
    "# 数据\n",
    "N=9\n",
    "x=np.linspace(-2, 2, N)\n",
    "y=x**2\n",
    "sizes = np.linspace(10, 20, N)\n",
    "xpts = np.array([-.09, -.12, .0, .12, .09])\n",
    "ypts = np.array([-.1, .02, .1, .02, -.1])\n",
    "\n",
    "# 画布列表\n",
    "figures = []\n",
    "\n",
    "\n",
    "# 绘制\n",
    "# 1.annular_wedge环状楔\n",
    "p = figure(title=\"annular_wedge\")\n",
    "p.annular_wedge(x, y, 10, 20, 0.6, 4.1, color=\"#8888ee\",inner_radius_units=\"screen\", outer_radius_units=\"screen\")\n",
    "figures.append(p)\n",
    "\n",
    "# 2.annular环状图\n",
    "p = figure(title=\"annulus\")\n",
    "p.annulus(x, y, 10, 20,  color=\"#7FC97F\",inner_radius_units=\"screen\", outer_radius_units=\"screen\")\n",
    "figures.append(p)\n",
    "\n",
    "# 3.\n",
    "p = figure(title=\"arc\")\n",
    "p.arc(x, y,20, 0.6, 4.1,radius_units = \"screen\" , color=\"#BEAED4\",line_width=3)\n",
    "figures.append(p)\n",
    "\n",
    "# 4. bezier\n",
    "p = figure(title= \"bezier\")\n",
    "p.bezier(x, y, x+0.2, y, x+0.1, y+0.1,x-0.1, y-0.1,color=\"#8073AC\", line_width=2)\n",
    "figures.append(p)\n",
    "\n",
    "# 5.circle\n",
    "p = figure(title=\"circle\")\n",
    "p.circle(x, y, radius=0.1, color=\"#3288BD\")\n",
    "figures.append(p)\n",
    "\n",
    "# 6.line\n",
    "p = figure(title=\"line\")\n",
    "p.line(x, y, color= \"#F46D43\")\n",
    "figures.append(p)\n",
    "\n",
    "# 7.multi_line\n",
    "p = figure(title= \"multi_line\")\n",
    "p.multi_line([xpts+xx for xx in x],[ypts+yy for yy in y], color=\"#8073AC\",line_width=2)\n",
    "figures.append(p)\n",
    "\n",
    "# 8.oval\n",
    "p = figure(title=\"oval\")\n",
    "p.oval(x,y,15,25, angle=-0.7, color=\"#1D91C0\",width_units=\"screen\", height_units=\"screen\")\n",
    "figures.append(p)\n",
    "\n",
    "# 9. patch\n",
    "p = figure(title=\"patch\" )\n",
    "p.patch(x,y,color=\"#F46D43\")\n",
    "figures.append(p)\n",
    "\n",
    "# 显示一组图形\n",
    "show(gridplot(figures,ncols=4,plot_width=200,plot_height=200))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "BokehDeprecationWarning: 'legend' keyword is deprecated, use explicit 'legend_label', 'legend_field', or 'legend_group' keywords instead\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "\n",
       "\n",
       "\n",
       "\n",
       "\n",
       "  <div class=\"bk-root\" id=\"9d3a6bc3-cb6f-4e8a-8762-ceb053affa38\" data-root-id=\"3870\"></div>\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/javascript": [
       "(function(root) {\n",
       "  function embed_document(root) {\n",
       "    \n",
       "  var docs_json = {\"b4c5f386-64f9-4658-addb-a1ed5ec722eb\":{\"roots\":{\"references\":[{\"attributes\":{\"background_fill_color\":\"#fafafa\",\"below\":[{\"id\":\"3881\"}],\"center\":[{\"id\":\"3884\"},{\"id\":\"3888\"},{\"id\":\"3919\"}],\"left\":[{\"id\":\"3885\"}],\"renderers\":[{\"id\":\"3909\"}],\"title\":{\"id\":\"3871\"},\"toolbar\":{\"id\":\"3896\"},\"x_range\":{\"id\":\"3873\"},\"x_scale\":{\"id\":\"3877\"},\"y_range\":{\"id\":\"3875\"},\"y_scale\":{\"id\":\"3879\"}},\"id\":\"3870\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"source\":{\"id\":\"3905\"}},\"id\":\"3910\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"3875\",\"type\":\"DataRange1d\"},{\"attributes\":{\"label\":{\"field\":\"species\"},\"renderers\":[{\"id\":\"3909\"}]},\"id\":\"3920\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"3873\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"3877\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"3893\",\"type\":\"ResetTool\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"field\":\"species\",\"transform\":{\"id\":\"3904\"}},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"field\":\"species\",\"transform\":{\"id\":\"3904\"}},\"marker\":{\"field\":\"species\",\"transform\":{\"id\":\"3903\"}},\"size\":{\"units\":\"screen\",\"value\":12},\"x\":{\"field\":\"petal_length\"},\"y\":{\"field\":\"sepal_width\"}},\"id\":\"3908\",\"type\":\"Scatter\"},{\"attributes\":{},\"id\":\"3916\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"3894\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"3890\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"3889\"},{\"id\":\"3890\"},{\"id\":\"3891\"},{\"id\":\"3892\"},{\"id\":\"3893\"},{\"id\":\"3894\"}]},\"id\":\"3896\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"3889\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"3912\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"axis_label\":\"Petal Length\",\"formatter\":{\"id\":\"3914\"},\"ticker\":{\"id\":\"3882\"}},\"id\":\"3881\",\"type\":\"LinearAxis\"},{\"attributes\":{\"overlay\":{\"id\":\"3895\"}},\"id\":\"3891\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"axis_label\":\"Petal Length\",\"formatter\":{\"id\":\"3912\"},\"ticker\":{\"id\":\"3886\"}},\"id\":\"3885\",\"type\":\"LinearAxis\"},{\"attributes\":{\"axis\":{\"id\":\"3881\"},\"ticker\":null},\"id\":\"3884\",\"type\":\"Grid\"},{\"attributes\":{\"factors\":[\"setosa\",\"versicolor\",\"virginica\"],\"palette\":[\"#1f77b4\",\"#ff7f0e\",\"#2ca02c\"]},\"id\":\"3904\",\"type\":\"CategoricalColorMapper\"},{\"attributes\":{},\"id\":\"3886\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis\":{\"id\":\"3885\"},\"dimension\":1,\"ticker\":null},\"id\":\"3888\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"3892\",\"type\":\"SaveTool\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.4},\"fill_color\":{\"field\":\"species\",\"transform\":{\"id\":\"3904\"}},\"line_color\":{\"field\":\"species\",\"transform\":{\"id\":\"3904\"}},\"marker\":{\"field\":\"species\",\"transform\":{\"id\":\"3903\"}},\"size\":{\"units\":\"screen\",\"value\":12},\"x\":{\"field\":\"petal_length\"},\"y\":{\"field\":\"sepal_width\"}},\"id\":\"3907\",\"type\":\"Scatter\"},{\"attributes\":{},\"id\":\"3882\",\"type\":\"BasicTicker\"},{\"attributes\":{\"factors\":[\"setosa\",\"versicolor\",\"virginica\"],\"markers\":[\"hex\",\"circle_x\",\"triangle\"]},\"id\":\"3903\",\"type\":\"CategoricalMarkerMapper\"},{\"attributes\":{\"text\":\"Iris Morphology\"},\"id\":\"3871\",\"type\":\"Title\"},{\"attributes\":{\"data\":{\"index\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149],\"petal_length\":{\"__ndarray__\":\"ZmZmZmZm9j9mZmZmZmb2P83MzMzMzPQ/AAAAAAAA+D9mZmZmZmb2PzMzMzMzM/s/ZmZmZmZm9j8AAAAAAAD4P2ZmZmZmZvY/AAAAAAAA+D8AAAAAAAD4P5qZmZmZmfk/ZmZmZmZm9j+amZmZmZnxPzMzMzMzM/M/AAAAAAAA+D/NzMzMzMz0P2ZmZmZmZvY/MzMzMzMz+z8AAAAAAAD4PzMzMzMzM/s/AAAAAAAA+D8AAAAAAADwPzMzMzMzM/s/ZmZmZmZm/j+amZmZmZn5P5qZmZmZmfk/AAAAAAAA+D9mZmZmZmb2P5qZmZmZmfk/mpmZmZmZ+T8AAAAAAAD4PwAAAAAAAPg/ZmZmZmZm9j8AAAAAAAD4PzMzMzMzM/M/zczMzMzM9D9mZmZmZmb2P83MzMzMzPQ/AAAAAAAA+D/NzMzMzMz0P83MzMzMzPQ/zczMzMzM9D+amZmZmZn5P2ZmZmZmZv4/ZmZmZmZm9j+amZmZmZn5P2ZmZmZmZvY/AAAAAAAA+D9mZmZmZmb2P83MzMzMzBJAAAAAAAAAEkCamZmZmZkTQAAAAAAAABBAZmZmZmZmEkAAAAAAAAASQM3MzMzMzBJAZmZmZmZmCkBmZmZmZmYSQDMzMzMzMw9AAAAAAAAADEDNzMzMzMwQQAAAAAAAABBAzczMzMzMEkDNzMzMzMwMQJqZmZmZmRFAAAAAAAAAEkBmZmZmZmYQQAAAAAAAABJAMzMzMzMzD0AzMzMzMzMTQAAAAAAAABBAmpmZmZmZE0DNzMzMzMwSQDMzMzMzMxFAmpmZmZmZEUAzMzMzMzMTQAAAAAAAABRAAAAAAAAAEkAAAAAAAAAMQGZmZmZmZg5AmpmZmZmZDUAzMzMzMzMPQGZmZmZmZhRAAAAAAAAAEkAAAAAAAAASQM3MzMzMzBJAmpmZmZmZEUBmZmZmZmYQQAAAAAAAABBAmpmZmZmZEUBmZmZmZmYSQAAAAAAAABBAZmZmZmZmCkDNzMzMzMwQQM3MzMzMzBBAzczMzMzMEEAzMzMzMzMRQAAAAAAAAAhAZmZmZmZmEEAAAAAAAAAYQGZmZmZmZhRAmpmZmZmZF0BmZmZmZmYWQDMzMzMzMxdAZmZmZmZmGkAAAAAAAAASQDMzMzMzMxlAMzMzMzMzF0BmZmZmZmYYQGZmZmZmZhRAMzMzMzMzFUAAAAAAAAAWQAAAAAAAABRAZmZmZmZmFEAzMzMzMzMVQAAAAAAAABZAzczMzMzMGkCamZmZmZkbQAAAAAAAABRAzczMzMzMFkCamZmZmZkTQM3MzMzMzBpAmpmZmZmZE0DNzMzMzMwWQAAAAAAAABhAMzMzMzMzE0CamZmZmZkTQGZmZmZmZhZAMzMzMzMzF0BmZmZmZmYYQJqZmZmZmRlAZmZmZmZmFkBmZmZmZmYUQGZmZmZmZhZAZmZmZmZmGEBmZmZmZmYWQAAAAAAAABZAMzMzMzMzE0CamZmZmZkVQGZmZmZmZhZAZmZmZmZmFEBmZmZmZmYUQJqZmZmZmRdAzczMzMzMFkDNzMzMzMwUQAAAAAAAABRAzczMzMzMFECamZmZmZkVQGZmZmZmZhRA\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[150]},\"petal_width\":{\"__ndarray__\":\"mpmZmZmZyT+amZmZmZnJP5qZmZmZmck/mpmZmZmZyT+amZmZmZnJP5qZmZmZmdk/MzMzMzMz0z+amZmZmZnJP5qZmZmZmck/mpmZmZmZuT+amZmZmZnJP5qZmZmZmck/mpmZmZmZuT+amZmZmZm5P5qZmZmZmck/mpmZmZmZ2T+amZmZmZnZPzMzMzMzM9M/MzMzMzMz0z8zMzMzMzPTP5qZmZmZmck/mpmZmZmZ2T+amZmZmZnJPwAAAAAAAOA/mpmZmZmZyT+amZmZmZnJP5qZmZmZmdk/mpmZmZmZyT+amZmZmZnJP5qZmZmZmck/mpmZmZmZyT+amZmZmZnZP5qZmZmZmbk/mpmZmZmZyT+amZmZmZnJP5qZmZmZmck/mpmZmZmZyT+amZmZmZm5P5qZmZmZmck/mpmZmZmZyT8zMzMzMzPTPzMzMzMzM9M/mpmZmZmZyT8zMzMzMzPjP5qZmZmZmdk/MzMzMzMz0z+amZmZmZnJP5qZmZmZmck/mpmZmZmZyT+amZmZmZnJP2ZmZmZmZvY/AAAAAAAA+D8AAAAAAAD4P83MzMzMzPQ/AAAAAAAA+D/NzMzMzMz0P5qZmZmZmfk/AAAAAAAA8D/NzMzMzMz0P2ZmZmZmZvY/AAAAAAAA8D8AAAAAAAD4PwAAAAAAAPA/ZmZmZmZm9j/NzMzMzMz0P2ZmZmZmZvY/AAAAAAAA+D8AAAAAAADwPwAAAAAAAPg/mpmZmZmZ8T/NzMzMzMz8P83MzMzMzPQ/AAAAAAAA+D8zMzMzMzPzP83MzMzMzPQ/ZmZmZmZm9j9mZmZmZmb2PzMzMzMzM/s/AAAAAAAA+D8AAAAAAADwP5qZmZmZmfE/AAAAAAAA8D8zMzMzMzPzP5qZmZmZmfk/AAAAAAAA+D+amZmZmZn5PwAAAAAAAPg/zczMzMzM9D/NzMzMzMz0P83MzMzMzPQ/MzMzMzMz8z9mZmZmZmb2PzMzMzMzM/M/AAAAAAAA8D/NzMzMzMz0PzMzMzMzM/M/zczMzMzM9D/NzMzMzMz0P5qZmZmZmfE/zczMzMzM9D8AAAAAAAAEQGZmZmZmZv4/zczMzMzMAEDNzMzMzMz8P5qZmZmZmQFAzczMzMzMAEAzMzMzMzP7P83MzMzMzPw/zczMzMzM/D8AAAAAAAAEQAAAAAAAAABAZmZmZmZm/j/NzMzMzMwAQAAAAAAAAABAMzMzMzMzA0BmZmZmZmYCQM3MzMzMzPw/mpmZmZmZAUBmZmZmZmYCQAAAAAAAAPg/ZmZmZmZmAkAAAAAAAAAAQAAAAAAAAABAzczMzMzM/D/NzMzMzMwAQM3MzMzMzPw/zczMzMzM/D/NzMzMzMz8P83MzMzMzABAmpmZmZmZ+T9mZmZmZmb+PwAAAAAAAABAmpmZmZmZAUAAAAAAAAD4P2ZmZmZmZvY/ZmZmZmZmAkAzMzMzMzMDQM3MzMzMzPw/zczMzMzM/D/NzMzMzMwAQDMzMzMzMwNAZmZmZmZmAkBmZmZmZmb+P2ZmZmZmZgJAAAAAAAAABEBmZmZmZmYCQGZmZmZmZv4/AAAAAAAAAEBmZmZmZmYCQM3MzMzMzPw/\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[150]},\"sepal_length\":{\"__ndarray__\":\"ZmZmZmZmFECamZmZmZkTQM3MzMzMzBJAZmZmZmZmEkAAAAAAAAAUQJqZmZmZmRVAZmZmZmZmEkAAAAAAAAAUQJqZmZmZmRFAmpmZmZmZE0CamZmZmZkVQDMzMzMzMxNAMzMzMzMzE0AzMzMzMzMRQDMzMzMzMxdAzczMzMzMFkCamZmZmZkVQGZmZmZmZhRAzczMzMzMFkBmZmZmZmYUQJqZmZmZmRVAZmZmZmZmFEBmZmZmZmYSQGZmZmZmZhRAMzMzMzMzE0AAAAAAAAAUQAAAAAAAABRAzczMzMzMFEDNzMzMzMwUQM3MzMzMzBJAMzMzMzMzE0CamZmZmZkVQM3MzMzMzBRAAAAAAAAAFkCamZmZmZkTQAAAAAAAABRAAAAAAAAAFkCamZmZmZkTQJqZmZmZmRFAZmZmZmZmFEAAAAAAAAAUQAAAAAAAABJAmpmZmZmZEUAAAAAAAAAUQGZmZmZmZhRAMzMzMzMzE0BmZmZmZmYUQGZmZmZmZhJAMzMzMzMzFUAAAAAAAAAUQAAAAAAAABxAmpmZmZmZGUCamZmZmZkbQAAAAAAAABZAAAAAAAAAGkDNzMzMzMwWQDMzMzMzMxlAmpmZmZmZE0BmZmZmZmYaQM3MzMzMzBRAAAAAAAAAFECamZmZmZkXQAAAAAAAABhAZmZmZmZmGEBmZmZmZmYWQM3MzMzMzBpAZmZmZmZmFkAzMzMzMzMXQM3MzMzMzBhAZmZmZmZmFkCamZmZmZkXQGZmZmZmZhhAMzMzMzMzGUBmZmZmZmYYQJqZmZmZmRlAZmZmZmZmGkAzMzMzMzMbQM3MzMzMzBpAAAAAAAAAGEDNzMzMzMwWQAAAAAAAABZAAAAAAAAAFkAzMzMzMzMXQAAAAAAAABhAmpmZmZmZFUAAAAAAAAAYQM3MzMzMzBpAMzMzMzMzGUBmZmZmZmYWQAAAAAAAABZAAAAAAAAAFkBmZmZmZmYYQDMzMzMzMxdAAAAAAAAAFEBmZmZmZmYWQM3MzMzMzBZAzczMzMzMFkDNzMzMzMwYQGZmZmZmZhRAzczMzMzMFkAzMzMzMzMZQDMzMzMzMxdAZmZmZmZmHEAzMzMzMzMZQAAAAAAAABpAZmZmZmZmHkCamZmZmZkTQDMzMzMzMx1AzczMzMzMGkDNzMzMzMwcQAAAAAAAABpAmpmZmZmZGUAzMzMzMzMbQM3MzMzMzBZAMzMzMzMzF0CamZmZmZkZQAAAAAAAABpAzczMzMzMHkDNzMzMzMweQAAAAAAAABhAmpmZmZmZG0BmZmZmZmYWQM3MzMzMzB5AMzMzMzMzGUDNzMzMzMwaQM3MzMzMzBxAzczMzMzMGEBmZmZmZmYYQJqZmZmZmRlAzczMzMzMHECamZmZmZkdQJqZmZmZmR9AmpmZmZmZGUAzMzMzMzMZQGZmZmZmZhhAzczMzMzMHkAzMzMzMzMZQJqZmZmZmRlAAAAAAAAAGECamZmZmZkbQM3MzMzMzBpAmpmZmZmZG0AzMzMzMzMXQDMzMzMzMxtAzczMzMzMGkDNzMzMzMwaQDMzMzMzMxlAAAAAAAAAGkDNzMzMzMwYQJqZmZmZmRdA\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[150]},\"sepal_width\":{\"__ndarray__\":\"AAAAAAAADEAAAAAAAAAIQJqZmZmZmQlAzczMzMzMCEDNzMzMzMwMQDMzMzMzMw9AMzMzMzMzC0AzMzMzMzMLQDMzMzMzMwdAzczMzMzMCECamZmZmZkNQDMzMzMzMwtAAAAAAAAACEAAAAAAAAAIQAAAAAAAABBAmpmZmZmZEUAzMzMzMzMPQAAAAAAAAAxAZmZmZmZmDkBmZmZmZmYOQDMzMzMzMwtAmpmZmZmZDUDNzMzMzMwMQGZmZmZmZgpAMzMzMzMzC0AAAAAAAAAIQDMzMzMzMwtAAAAAAAAADEAzMzMzMzMLQJqZmZmZmQlAzczMzMzMCEAzMzMzMzMLQGZmZmZmZhBAzczMzMzMEEDNzMzMzMwIQJqZmZmZmQlAAAAAAAAADEDNzMzMzMwMQAAAAAAAAAhAMzMzMzMzC0AAAAAAAAAMQGZmZmZmZgJAmpmZmZmZCUAAAAAAAAAMQGZmZmZmZg5AAAAAAAAACEBmZmZmZmYOQJqZmZmZmQlAmpmZmZmZDUBmZmZmZmYKQJqZmZmZmQlAmpmZmZmZCUDNzMzMzMwIQGZmZmZmZgJAZmZmZmZmBkBmZmZmZmYGQGZmZmZmZgpAMzMzMzMzA0AzMzMzMzMHQJqZmZmZmQVAAAAAAAAAAEAAAAAAAAAIQJqZmZmZmQFAMzMzMzMzB0AzMzMzMzMHQM3MzMzMzAhAAAAAAAAACECamZmZmZkFQJqZmZmZmQFAAAAAAAAABECamZmZmZkJQGZmZmZmZgZAAAAAAAAABEBmZmZmZmYGQDMzMzMzMwdAAAAAAAAACEBmZmZmZmYGQAAAAAAAAAhAMzMzMzMzB0DNzMzMzMwEQDMzMzMzMwNAMzMzMzMzA0CamZmZmZkFQJqZmZmZmQVAAAAAAAAACEAzMzMzMzMLQM3MzMzMzAhAZmZmZmZmAkAAAAAAAAAIQAAAAAAAAARAzczMzMzMBEAAAAAAAAAIQM3MzMzMzARAZmZmZmZmAkCamZmZmZkFQAAAAAAAAAhAMzMzMzMzB0AzMzMzMzMHQAAAAAAAAARAZmZmZmZmBkBmZmZmZmYKQJqZmZmZmQVAAAAAAAAACEAzMzMzMzMHQAAAAAAAAAhAAAAAAAAACEAAAAAAAAAEQDMzMzMzMwdAAAAAAAAABEDNzMzMzMwMQJqZmZmZmQlAmpmZmZmZBUAAAAAAAAAIQAAAAAAAAARAZmZmZmZmBkCamZmZmZkJQAAAAAAAAAhAZmZmZmZmDkDNzMzMzMwEQJqZmZmZmQFAmpmZmZmZCUBmZmZmZmYGQGZmZmZmZgZAmpmZmZmZBUBmZmZmZmYKQJqZmZmZmQlAZmZmZmZmBkAAAAAAAAAIQGZmZmZmZgZAAAAAAAAACEBmZmZmZmYGQGZmZmZmZg5AZmZmZmZmBkBmZmZmZmYGQM3MzMzMzARAAAAAAAAACEAzMzMzMzMLQM3MzMzMzAhAAAAAAAAACEDNzMzMzMwIQM3MzMzMzAhAzczMzMzMCECamZmZmZkFQJqZmZmZmQlAZmZmZmZmCkAAAAAAAAAIQAAAAAAAAARAAAAAAAAACEAzMzMzMzMLQAAAAAAAAAhA\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[150]},\"species\":[\"setosa\",\"setosa\",\"setosa\",\"setosa\",\"setosa\",\"setosa\",\"setosa\",\"setosa\",\"setosa\",\"setosa\",\"setosa\",\"setosa\",\"setosa\",\"setosa\",\"setosa\",\"setosa\",\"setosa\",\"setosa\",\"setosa\",\"setosa\",\"setosa\",\"setosa\",\"setosa\",\"setosa\",\"setosa\",\"setosa\",\"setosa\",\"setosa\",\"setosa\",\"setosa\",\"setosa\",\"setosa\",\"setosa\",\"setosa\",\"setosa\",\"setosa\",\"setosa\",\"setosa\",\"setosa\",\"setosa\",\"setosa\",\"setosa\",\"setosa\",\"setosa\",\"setosa\",\"setosa\",\"setosa\",\"setosa\",\"setosa\",\"setosa\",\"versicolor\",\"versicolor\",\"versicolor\",\"versicolor\",\"versicolor\",\"versicolor\",\"versicolor\",\"versicolor\",\"versicolor\",\"versicolor\",\"versicolor\",\"versicolor\",\"versicolor\",\"versicolor\",\"versicolor\",\"versicolor\",\"versicolor\",\"versicolor\",\"versicolor\",\"versicolor\",\"versicolor\",\"versicolor\",\"versicolor\",\"versicolor\",\"versicolor\",\"versicolor\",\"versicolor\",\"versicolor\",\"versicolor\",\"versicolor\",\"versicolor\",\"versicolor\",\"versicolor\",\"versicolor\",\"versicolor\",\"versicolor\",\"versicolor\",\"versicolor\",\"versicolor\",\"versicolor\",\"versicolor\",\"versicolor\",\"versicolor\",\"versicolor\",\"versicolor\",\"versicolor\",\"versicolor\",\"versicolor\",\"versicolor\",\"versicolor\",\"virginica\",\"virginica\",\"virginica\",\"virginica\",\"virginica\",\"virginica\",\"virginica\",\"virginica\",\"virginica\",\"virginica\",\"virginica\",\"virginica\",\"virginica\",\"virginica\",\"virginica\",\"virginica\",\"virginica\",\"virginica\",\"virginica\",\"virginica\",\"virginica\",\"virginica\",\"virginica\",\"virginica\",\"virginica\",\"virginica\",\"virginica\",\"virginica\",\"virginica\",\"virginica\",\"virginica\",\"virginica\",\"virginica\",\"virginica\",\"virginica\",\"virginica\",\"virginica\",\"virginica\",\"virginica\",\"virginica\",\"virginica\",\"virginica\",\"virginica\",\"virginica\",\"virginica\",\"virginica\",\"virginica\",\"virginica\",\"virginica\",\"virginica\"]},\"selected\":{\"id\":\"3916\"},\"selection_policy\":{\"id\":\"3917\"}},\"id\":\"3905\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"items\":[{\"id\":\"3920\"}]},\"id\":\"3919\",\"type\":\"Legend\"},{\"attributes\":{},\"id\":\"3879\",\"type\":\"LinearScale\"},{\"attributes\":{\"data_source\":{\"id\":\"3905\"},\"glyph\":{\"id\":\"3907\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"3908\"},\"selection_glyph\":null,\"view\":{\"id\":\"3910\"}},\"id\":\"3909\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"3914\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"3917\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"3895\",\"type\":\"BoxAnnotation\"}],\"root_ids\":[\"3870\"]},\"title\":\"Bokeh Application\",\"version\":\"2.2.3\"}};\n",
       "  var render_items = [{\"docid\":\"b4c5f386-64f9-4658-addb-a1ed5ec722eb\",\"root_ids\":[\"3870\"],\"roots\":{\"3870\":\"9d3a6bc3-cb6f-4e8a-8762-ceb053affa38\"}}];\n",
       "  root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
       "\n",
       "  }\n",
       "  if (root.Bokeh !== undefined) {\n",
       "    embed_document(root);\n",
       "  } else {\n",
       "    var attempts = 0;\n",
       "    var timer = setInterval(function(root) {\n",
       "      if (root.Bokeh !== undefined) {\n",
       "        clearInterval(timer);\n",
       "        embed_document(root);\n",
       "      } else {\n",
       "        attempts++;\n",
       "        if (attempts > 100) {\n",
       "          clearInterval(timer);\n",
       "          console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
       "        }\n",
       "      }\n",
       "    }, 10, root)\n",
       "  }\n",
       "})(window);"
      ],
      "application/vnd.bokehjs_exec.v0+json": ""
     },
     "metadata": {
      "application/vnd.bokehjs_exec.v0+json": {
       "id": "3870"
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from bokeh.sampledata.iris import flowers\n",
    "from bokeh.transform import factor_cmap,factor_mark\n",
    "# 鸢尾花品种及分类标记\n",
    "SPECIES = ['setosa','versicolor','virginica']\n",
    "MARKERS = ['hex','circle_x','triangle']        # 设置对应形状\n",
    "# 画布\n",
    "p = figure(title = \"Iris Morphology\",background_fill_color=\"#fafafa\")\n",
    "# 绘图\n",
    "p.scatter(\"petal_length\",\"sepal_width\",source=flowers,legend= \"species\",fill_alpha=0.4,size=12,\n",
    "         marker=factor_mark('species',MARKERS,SPECIES),\n",
    "         color=factor_cmap('species','Category10_3',SPECIES))\n",
    "\n",
    "# 其他\n",
    "p.xaxis.axis_label = 'Petal Length'\n",
    "p.yaxis.axis_label = 'Petal Length'\n",
    "# 显示\n",
    "show(p)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 散点图 scatter"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 代码例子"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "\n",
       "\n",
       "\n",
       "\n",
       "\n",
       "  <div class=\"bk-root\" id=\"d37325d7-a5fc-48c4-9790-c569263a7575\" data-root-id=\"4181\"></div>\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/javascript": [
       "(function(root) {\n",
       "  function embed_document(root) {\n",
       "    \n",
       "  var docs_json = {\"be2019e8-b6e2-4de8-a5e6-ca3ff0a47f8f\":{\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"4190\"}],\"center\":[{\"id\":\"4193\"},{\"id\":\"4197\"}],\"left\":[{\"id\":\"4194\"}],\"plot_height\":400,\"plot_width\":400,\"renderers\":[{\"id\":\"4215\"}],\"title\":{\"id\":\"4435\"},\"toolbar\":{\"id\":\"4205\"},\"x_range\":{\"id\":\"4182\"},\"x_scale\":{\"id\":\"4186\"},\"y_range\":{\"id\":\"4184\"},\"y_scale\":{\"id\":\"4188\"}},\"id\":\"4181\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"4199\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"4437\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"4203\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"4198\",\"type\":\"PanTool\"},{\"attributes\":{\"source\":{\"id\":\"4212\"}},\"id\":\"4216\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"4441\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"4201\",\"type\":\"SaveTool\"},{\"attributes\":{\"axis\":{\"id\":\"4190\"},\"ticker\":null},\"id\":\"4193\",\"type\":\"Grid\"},{\"attributes\":{\"formatter\":{\"id\":\"4437\"},\"ticker\":{\"id\":\"4195\"}},\"id\":\"4194\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"4439\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"4188\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"4202\",\"type\":\"ResetTool\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"navy\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"navy\"},\"radius\":{\"units\":\"data\",\"value\":0.1},\"size\":{\"units\":\"screen\",\"value\":20},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"4214\",\"type\":\"Circle\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"4198\"},{\"id\":\"4199\"},{\"id\":\"4200\"},{\"id\":\"4201\"},{\"id\":\"4202\"},{\"id\":\"4203\"}]},\"id\":\"4205\",\"type\":\"Toolbar\"},{\"attributes\":{\"data_source\":{\"id\":\"4212\"},\"glyph\":{\"id\":\"4213\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"4214\"},\"selection_glyph\":null,\"view\":{\"id\":\"4216\"}},\"id\":\"4215\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"4191\",\"type\":\"BasicTicker\"},{\"attributes\":{\"formatter\":{\"id\":\"4439\"},\"ticker\":{\"id\":\"4191\"}},\"id\":\"4190\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"4442\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"data\":{\"x\":[1,2,3,4,5],\"y\":[6,7,2,4,5]},\"selected\":{\"id\":\"4441\"},\"selection_policy\":{\"id\":\"4442\"}},\"id\":\"4212\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"text\":\"\"},\"id\":\"4435\",\"type\":\"Title\"},{\"attributes\":{\"axis\":{\"id\":\"4194\"},\"dimension\":1,\"ticker\":null},\"id\":\"4197\",\"type\":\"Grid\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"4204\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"4195\",\"type\":\"BasicTicker\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"navy\"},\"line_alpha\":{\"value\":0.5},\"line_color\":{\"value\":\"navy\"},\"radius\":{\"units\":\"data\",\"value\":0.1},\"size\":{\"units\":\"screen\",\"value\":20},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"4213\",\"type\":\"Circle\"},{\"attributes\":{\"overlay\":{\"id\":\"4204\"}},\"id\":\"4200\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"4182\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"4184\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"4186\",\"type\":\"LinearScale\"}],\"root_ids\":[\"4181\"]},\"title\":\"Bokeh Application\",\"version\":\"2.2.3\"}};\n",
       "  var render_items = [{\"docid\":\"be2019e8-b6e2-4de8-a5e6-ca3ff0a47f8f\",\"root_ids\":[\"4181\"],\"roots\":{\"4181\":\"d37325d7-a5fc-48c4-9790-c569263a7575\"}}];\n",
       "  root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
       "\n",
       "  }\n",
       "  if (root.Bokeh !== undefined) {\n",
       "    embed_document(root);\n",
       "  } else {\n",
       "    var attempts = 0;\n",
       "    var timer = setInterval(function(root) {\n",
       "      if (root.Bokeh !== undefined) {\n",
       "        clearInterval(timer);\n",
       "        embed_document(root);\n",
       "      } else {\n",
       "        attempts++;\n",
       "        if (attempts > 100) {\n",
       "          clearInterval(timer);\n",
       "          console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
       "        }\n",
       "      }\n",
       "    }, 10, root)\n",
       "  }\n",
       "})(window);"
      ],
      "application/vnd.bokehjs_exec.v0+json": ""
     },
     "metadata": {
      "application/vnd.bokehjs_exec.v0+json": {
       "id": "4181"
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 示例1\n",
    "# 数据\n",
    "x = [1,2,3,4,5]\n",
    "y = [6,7,2,4,5]\n",
    "# 画布：尺寸\n",
    "p = figure(plot_width=400,plot_height=400)\n",
    "# 画图\n",
    "p.scatter(x,y,\n",
    "         size = 20,  # 显示器像素单位\n",
    "         radius=0.1, # 圆的半径\n",
    "         marker='circle',color=\"navy\",alpha=0.5)\n",
    "# 显示\n",
    "show(p)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
